# AGENTS.md - NixOS Configuration Repository ## Build/Test Commands ```bash # Validate configuration syntax nix flake check # Dry-run build for specific host (test without building) nix build .#nixosConfigurations..config.system.build.toplevel --dry-run # Test configuration without switching sudo nixos-rebuild test --flake . # Apply configuration changes sudo nixos-rebuild switch --flake .# ``` ## Code Style Guidelines **Language**: Nix expression language **Formatting**: Use 2-4 space indentation (varies by file), no tabs except in some user modules **Imports**: Always import required modules at top: `{ config, lib, pkgs, ... }:` or with additional args like `inputs, outputs, system, timeZone` **Naming**: Use camelCase for options (`userName`, `hostName`, `isDesktopUser`), kebab-case for hostnames, underscores for module names (`main_user`) **Module Pattern**: Define options with `lib.mkOption`, use `lib.mkIf` for conditional config, use `lib.mkMerge` for combining attribute sets **Error Handling**: Rely on Nix's built-in evaluation errors; use `lib.mkEnableOption` for optional features **Types**: Specify types in options: `lib.types.str`, `lib.types.bool`, provide defaults and descriptions for all options **Comments**: Minimal comments; prefer self-documenting option descriptions; hardware files auto-generated with warnings at top