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.
User application modules provide declarative configuration for common desktop applications. All modules are opt-in and can be enabled individually.
Enabling User Applications
The top-level userapps.enable option enables profile-sync-daemon for browser optimization:
This enables:
- Profile Sync Daemon (psd) - Syncs browser profiles to tmpfs for improved performance
- Resync interval: 10 minutes
Browsers
Multiple browsers can be installed simultaneously. Priority values determine which becomes the default.
Available Browsers
LibreWolf
Privacy-focused Firefox fork with pre-configured privacy settings.Priority: 10 (highest by default)
Firefox
Mozilla Firefox with FF-ULTIMA theme and privacy extensions.Priority: 20
Floorp
Japanese Firefox-based browser with unique features.Priority: 30
Google Chrome
Google’s browser (binary distribution).Priority: 100 (lowest, fallback)
Common Options
userapps.browsers.<browser>.enable
Enable the browser.userapps.browsers.librewolf.enable = true;
userapps.browsers.<browser>.priority
Priority for becoming the default browser. Lower values win.userapps.browsers.firefox.priority = 15; # Higher priority than default
Firefox-based Browsers
LibreWolf, Firefox, and Floorp share common configuration:
Search Engines
All Firefox-based browsers include custom search engines:
- DuckDuckGo (default) - Privacy-focused search
- Nix Packages (
@np) - Search NixOS packages
- Nix Options (
@no) - Search NixOS options
- NixOS Wiki (
@nw) - Search the NixOS wiki
Google and Bing are hidden by default.
Extensions
Pre-installed extensions:
- uBlock Origin - Ad and tracker blocking
- Privacy Badger - Intelligent tracker blocking
- Bitwarden - Password manager integration
Theme
Firefox-based browsers use the FF-ULTIMA theme for a modern, minimalist interface.
Example Configuration
userapps = {
defaultApplications.enable = true; # Set XDG default applications
browsers = {
librewolf = {
enable = true;
priority = 10; # Default browser
};
firefox = {
enable = true;
priority = 20; # Installed but not default
};
chrome = {
enable = true;
priority = 100; # Fallback
};
};
};
Chrome Configuration
Chrome has a special default behavior:
userapps.browsers.chrome.enable = true; # Auto-enables if no other browsers enabled
This ensures at least one browser is always available.
Communication
Communication applications for messaging and collaboration.
Discord
userapps.communication.discord.enable
Enable Discord client (Vesktop).userapps.communication.discord.enable = true;
Uses Vesktop - A Discord client with Vencord pre-installed for enhanced features and customization.
Comprehensive development environment configuration.
userapps.development.enable
Enable development tools and configure environment.userapps.development.enable = true;
This enables:
- npm with local bin directory in PATH (
~/.npm/bin)
- uv - Fast Python package installer and resolver
Text Editors
Editor modules support priority-based defaults for EDITOR and VISUAL environment variables.
Neovim
userapps.development.editors.neovim.enable
Enable Neovim editor.userapps.development.editors.neovim.enable = true;
userapps.development.editors.neovim.priority
Priority for being the default editor.userapps.development.editors.neovim.priority = 10;
userapps.development.editors.neovim.settings
Neovim configuration settings passed to nvf.userapps.development.editors.neovim.settings = {
vim.viAlias = true;
vim.vimAlias = true;
vim.lsp.enable = true;
};
Neovim is configured using the nvf (NeoVim Flake) framework, which provides a type-safe, modular configuration system.
Example from homes/soriphoono:
userapps.development.editors.neovim.settings = import ./nvim {inherit pkgs;};
VSCode / VSCodium
userapps.development.editors.vscode.enable
Enable VSCode/VSCodium editor.userapps.development.editors.vscode.enable = true;
userapps.development.editors.vscode.package
package
default:"pkgs.vscodium"
The VSCode package to use.userapps.development.editors.vscode.package = pkgs.vscode;
userapps.development.editors.vscode.desktop
string
default:"codium.desktop"
The desktop file name for XDG integration.userapps.development.editors.vscode.desktop = "code.desktop";
userapps.development.editors.vscode.priority
Priority for being the default editor. Lower priority than terminal editors by default.userapps.development.editors.vscode.priority = 25;
AI Agents
AI agent configuration modules for LLM integration.
userapps.development.agents = {
# Future: MCP server configuration
# Future: Skills configuration
# Future: Gemini client configuration
};
Located in modules/home/userapps/development/agents/:
mcp-servers.nix - Model Context Protocol server management
skills.nix - Agent skill definitions
clients/gemini.nix - Google Gemini API client
Development Categories
The development module structure includes:
development/
├── agents/ # AI agent configurations
├── editors/ # Text editors (Neovim, VSCode, etc.)
├── domain_specific/ # Domain tools (k8s, etc.)
├── terminal/ # Terminal emulators (Kitty, Ghostty, Warp)
├── knowledge-management/ # Obsidian, etc.
└── disk_tools/ # Disk utilities
Example Configuration
userapps.development = {
enable = true;
editors = {
neovim = {
enable = true;
priority = 10;
settings = {
vim.viAlias = true;
vim.vimAlias = true;
};
};
vscode = {
enable = true;
priority = 20;
package = pkgs.vscode;
};
};
};
Data Fortress
Security and cloud storage applications.
Bitwarden
userapps.data-fortress.bitwarden.enable
Enable Bitwarden desktop client.userapps.data-fortress.bitwarden.enable = true;
Installs the official Bitwarden desktop application for password management.
Nextcloud
userapps.data-fortress.nextcloud.enable
Enable Nextcloud sync client.userapps.data-fortress.nextcloud.enable = true;
Installs the Nextcloud desktop client for file synchronization.
Example
userapps.data-fortress = {
bitwarden.enable = true;
nextcloud.enable = true;
};
Office Suite
Productivity applications (configured in modules/home/userapps/office/).
userapps.office = {
# Office applications configuration
};
Default Applications
Control XDG MIME type associations.
userapps.defaultApplications.enable
Enable setting default applications via Nix configuration.userapps.defaultApplications.enable = true;
When enabled, modules can set XDG MIME type defaults based on priority values. This affects:
- Default web browser for HTTP/HTTPS links
- Default text editor for plain text and code files
- Other file type associations
Disable this if you prefer to manage default applications through your desktop environment.
Complete Example
A comprehensive user applications configuration:
userapps = {
enable = true;
defaultApplications.enable = true;
browsers = {
librewolf.enable = true; # Default browser (priority 10)
firefox.enable = true; # Alternative (priority 20)
};
communication = {
discord.enable = true;
};
development = {
enable = true;
editors = {
neovim = {
enable = true;
priority = 10; # Default editor
settings = import ./nvim-config.nix;
};
vscode = {
enable = true;
priority = 30;
package = pkgs.vscode;
};
};
};
data-fortress = {
bitwarden.enable = true;
nextcloud.enable = true;
};
};