Hosts Overview
Purpose
This section covers configuration of individual host machines. Repository uses automatic discovery system to manage hosts based on device type.
Architecture / Services / Scope
Entry Points
hosts/: Root directory for all host configurations.hosts/desktop/: Configurations for desktop systems.hosts/laptop/: Configurations for laptop systems.hosts/server/: Configurations for server systems.hosts/shared/: Shared host configuration still used across multiple hosts.hosts/secrets.yaml: Root-level encrypted secrets for host configurations.
Configuration Structure
Host-specific configurations live in hosts/{device-type}/{hostname}/default.nix.
Operational Notes / Assumptions
Common Workflows
- Adding new host: Create directory for host in appropriate device type category and add
default.nix. - Modifying host: Update
default.nix, associated files in host directory, or relevant module undermodules/nixos/core/.
Decky Loader Lifecycle
When jovian.decky-loader.enable = true is set on host with core.gaming.enable = true, Decky Loader is not started automatically at boot. Instead it is managed in lock-step with Steam desktop application:
-
modules/nixos/core/gaming.nix— overrides Jovian-provideddecky-loader.serviceto remove it frommulti-user.target, suppresses noisy CSS_Loader health-check log spam viaLogFilterPatterns, and adds polkit rule that permits only configured Steam user in active local session to start/stop system service without password prompt. All of this is behindlib.mkIf (config.jovian.decky-loader.enable)guard, so it is no-op on machines without Jovian. -
Home-Manager shared module injected by
modules/nixos/core/gaming.nix— definesdecky-loader-steam-watchsystemd user service, active for duration of graphical session. It polls~/.steam/steam.pidevery 3 seconds to detect Steam starting, then startsdecky-loader.service, and usestail --pidto block until Steam exits before stopping it again. Service is only enabled whenosConfig.jovian.decky-loader.enableis true.
Log filtering
CSS_Loader plugin health-checks Steam’s internal web interface (port 8080) every few seconds. When Steam is not running these produce continuous journal noise of form:
[CSS_Loader] [FAIL] [css_browserhook.py:437] [Health Check] Cannot connect to host 127.0.0.1:8080 …
This is suppressed with following LogFilterPatterns entry on service (requires systemd ≥ 255):
LogFilterPatterns = "~\\[CSS_Loader\\].*\\[Health Check\\].*Cannot connect";