docs: add explanatory comments to global configurations

Add comprehensive inline documentation to both NixOS and Home Manager
global configuration files, explaining the purpose of each section,
overlay usage, unfree package policy, and configuration settings.
This commit is contained in:
♥ Minnie ♥ 2025-10-05 16:40:48 +08:00
parent 94221dbb56
commit 341d8ecf45
Signed by: jasmine
GPG key ID: 8563E358D4E8040E
2 changed files with 38 additions and 16 deletions

View file

@ -1,20 +1,28 @@
# Global NixOS configuration shared across all hosts.
# This module provides base system settings, nixpkgs configuration, and core imports
# that every host in this configuration inherits.
{outputs, lib, ...}: {
imports = [
./age.nix
./env.nix
./nix.nix
./ssh.nix
./age.nix # Secret management with agenix
./env.nix # Environment variables and shell configuration
./nix.nix # Nix daemon settings, features, and garbage collection
./ssh.nix # SSH server configuration and authorized keys
];
# Nixpkgs configuration - applies overlays and sets package acceptance policy
nixpkgs = {
# Apply custom overlays to extend/modify the package set
overlays = [
# Overlays our own flake exports
outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
outputs.overlays.additions # Custom packages from pkgs/
outputs.overlays.modifications # Package patches and modifications
outputs.overlays.unstable-packages # Unstable channel packages
];
config = {
# Default to free software only - unfree packages must be explicitly allowed
allowUnfree = false;
# Centralized unfree package allowlist for NixOS system configuration.
# Note: nixpkgs.config.allowUnfreePredicate doesn't merge across modules - only the
# last definition wins. To maintain explicit control over unfree packages, we list
@ -30,10 +38,13 @@
};
};
# Localization settings - Australian English locale and Perth timezone
i18n.defaultLocale = "en_AU.UTF-8";
time.timeZone = "Australia/Perth";
# Network configuration - default domain for host FQDNs
networking.domain = "kanto.dev";
# Enable non-free firmware for hardware compatibility (WiFi, GPU drivers, etc.)
hardware.enableRedistributableFirmware = true;
}