From 98be644662919e8af7081a3324962f06d6f862f1 Mon Sep 17 00:00:00 2001 From: Robby Zambito Date: Sun, 5 Apr 2026 17:04:56 -0400 Subject: feat: update AGENTS.md with ini specifics --- AGENTS.md | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) (limited to 'AGENTS.md') diff --git a/AGENTS.md b/AGENTS.md index 8989112..af6ac84 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -15,13 +15,22 @@ This is a Guix Home Environment configuration repository. Declarative system and │ ├── sway.scm # Sway window manager config │ ├── emacs.scm # Emacs configuration │ ├── foot.scm # Foot terminal config -│ └── git.scm # Git configuration +│ ├── git.scm # Git configuration +│ └── ssh.scm # SSH client configuration ├── wofi/ # Wofi application launcher assets ├── config-generation/ # Helper modules for config generation └── reconfigure* # Convenience scripts for deployment ``` -**Module pattern:** Extract configurations into `config/*.scm` using `(define-library (config ))` with exported variables renamed in `home.scm` (e.g., `(rename (config git) (git-config rz/git-config))`). +**Module pattern:** Extract configurations into `config/*.scm` using `(define-library (config ))` with exported variables renamed in `home.scm`. + +**Configuration generation patterns:** + +- **`scm->ini` helper (foot.scm, git.scm):** Use the `scm->ini` function from the `ini` library to generate configuration files from association lists. Git config (INI format) and Foot terminal config (INI format) use this pattern. These modules export a single `-config` string variable. + +- **Guix service records (ssh.scm, sway.scm):** Use native Guix service records like `openssh-host` and `sway-configuration`. The SSH module exports both host records for the `home-openssh-service-type` service and a config string for XDG deployment. SSH config uses native SSH format (key-value pairs under Host blocks), not INI format. + +- **String-based (emacs.scm):** Direct string content exported as `-config` for XDG config files service deployment. ## Build, Test, and Development Commands @@ -29,7 +38,7 @@ This is a Guix Home Environment configuration repository. Declarative system and |---------|-------------| | `guix home reconfigure home.scm` | Apply home environment changes | | `guix system reconfigure system.scm` | Apply system-wide changes | -| `guix home reconfigure home.scm --dry-run` | Validate configuration without applying | +| `guix home build home.scm` | Validate and build configuration | | `./reconfigure-home` | Convenience script for home reconfiguration | | `./reconfigure-system` | Convenience script for system reconfiguration | @@ -38,17 +47,14 @@ This is a Guix Home Environment configuration repository. Declarative system and - **Indentation:** 8 spaces for Scheme files (Guix standard) - **File extensions:** `.scm` for all Scheme modules - **Module naming:** `(config )` for extracted configurations -- **Variable naming:** Use `rz/` prefix for renamed exports (e.g., `rz/git-config`, `rz/sway-config`) +- **Variable naming:** Use `rz/` prefix for renamed exports (e.g., `rz/git-config`, `rz/sway-config`, `rz/ssh-config`) - **Comments:** Begin files with `;;;` for major sections, use `;;` for inline comments -**INI configuration pattern:** -```scheme -(define -config - (parameterize - ((current-output-port (open-output-string))) - (scm->ini ) - (get-output-string (current-output-port)))) -``` +**Module export patterns:** + +- INI-based modules (foot.scm, git.scm) export `-config` as string content +- Service-based modules (ssh.scm, sway.scm) export both service records and config file content where applicable +- String-based modules (emacs.scm) export `-config` as string content ## Testing Guidelines @@ -66,7 +72,7 @@ This is a Guix Home Environment configuration repository. Declarative system and ## Agent-Specific Instructions - **Ignore backup files:** All files ending with `~` are backup/temporary files and should be ignored during analysis and modification. - - Check for existing `config/*.scm` modules before creating new ones - Use `home.scm` imports to understand the module dependency graph - Run validation commands before marking configuration changes complete +- **Configuration format awareness:** Distinguish between INI-based configs (git, foot) and native format configs (ssh, sway, emacs) when generating or modifying configuration content -- cgit