Git Configuration
The Git module manages your Git identity, signing configuration, and multi-identity workflows.Options
The Git username to use for commits.
The Git email address to use for commits.
The directory where Git projects are stored. Used for multi-identity configuration.
Additional Git identities for different contexts (work, school, etc.). Each identity has its own signing key and is activated based on project directory.Projects in
~/Documents/Projects/Work/ will automatically use the work identity.Features
- SSH Signing - Commits are signed with SSH keys by default
- Delta Integration - Beautiful diff viewing with line numbers and side-by-side display
- Smart Defaults - Histogram diff algorithm, auto-setup remote, pull rebase
- Conflict Resolution - zdiff3 merge conflict style and rerere enabled
- Multi-Identity Support - Different identities per project directory
Example Configuration
GitOps
Automate Home Manager configuration updates by syncing from a Git repository on a schedule.Options
Enable Home Manager GitOps synchronization.
Git repository URL to fetch updates from.
Branch to pull from.
Interval between syncs (systemd timer format).
Behavior
When enabled, a systemd user timer runs everyinterval and:
- Fetches latest changes from the Git repository
- Performs a hard reset to
origin/<branch> - Runs
nh home switchto apply the configuration
~/Documents/Projects/homelab.
Example
Secrets Management
Manage encrypted secrets using SOPS and age encryption.Options
Enable secrets management.
Default SOPS file containing encrypted secrets.
Path to the age key file for decryption.On NixOS, this is automatically provisioned. On non-NixOS systems, you must ensure this file exists.
Enable environment variable secrets in dotenv format.
SOPS file containing environment secrets.
Example
Shell Configuration
Configure Fish shell, Starship prompt, and Fastfetch system information display.Options
Shell command aliases applied to all shells.
Environment variables to set for the user.
Enable Fish shell configuration.
Generate Fish shell completions.
Extra commands to run on Fish shell initialization.
Included Tools
- Fish Shell - Modern, user-friendly shell with syntax highlighting
- Starship - Minimal, blazing-fast prompt with Git status and context
- Fastfetch - System information display with custom logo
- Direnv - Automatic environment loading for projects
- Eza - Modern
lsreplacement with Git integration - Btop - System resource monitor
Example
SSH Management
Manage SSH keys, agent configuration, and integration with secrets.Options
Primary SSH public key for authentication and Git signing.
Additional SSH keys for different contexts. The private keys are provisioned from secrets.
Features
- Automatic Key Deployment - Public keys deployed to
~/.ssh/ - Secrets Integration - Private keys provisioned from SOPS secrets
- SSH Agent - Automatically started if not provided by the system
- SSH Config Management - Handles OpenSSH permission requirements
- Multi-Key Support - Multiple identity files for different services
Example
Health Checks
Validate environment configuration and warn about potential issues.Options
Enable environment health checks.
Check if the age key file exists when secrets are enabled.
Checks Performed
- Age Key Existence - Warns if secrets are enabled but the age key file is missing
- Git Configuration - Ensures Git username and email are set
Default Packages
Core modules automatically install essential utilities:- Compression - p7zip, unrar
- Fonts - Carlito, Liberation, Nerd Fonts (Aurulent Sans Mono, Sauce Code Pro)
- Home Manager - Self-management and
nh(Nix helper) for system operations
NH Configuration
Thenh tool is configured for convenient Nix operations: