6.1 KiB
6.1 KiB
NixOS AGENTS and style-skill scope design tree
This tree reviews configs/nixos/AGENTS.md.
It decides which instructions belong in Nix style rules.
Known facts
configs/nixos/AGENTS.mdhas 70 lines.- Each frontier question quotes the complete instruction under review.
- This review decides instruction placement only.
- It supplies guidance for desktop, Firefox, Neovim, AI tooling, and NixOS gotchas.
- The
/reviewprompt loadsnix-stylefor Nix files. nix-styleloads every rule undersrc/skills/style/nix/rules/.- The current Nix rules cover Nix syntax and flake structure.
configs/nixos/AGENTS.mdincludes a guest-module ownership rule.- The RomM session missed that ownership rule during implementation.
registry.window-iconexists inconfigs/nixos/registry/window-icon.nix.- Desktop application modules declare window classes and rendered icons in that registry.
- Hyprland reads the registry to generate workspace icon mappings.
- The AGENTS instruction named the registry after its introduction on 2026-10-11.
- The
classoption describes its window-class match. - The
iconoption describes a string icon value. - The registry schema does not document the rendered-string requirement or the class-discovery command.
- Hyprland renders
config.registry.envas itsenvconfiguration. - The
envregistry replaced direct Hyprland environment declarations in commit370cab8f8. configs/nixos/modules/desktop/apps/r2modman.nixenables a graphical application without aregistry.window-icondeclaration.- The current registry modules already validate value uniqueness and field combinations.
- They do not validate required producer declarations.
- The registry collector is specific to the NixOS dotfiles configuration.
- A non-discoverable environment fact records local behavior that configuration, source code, and normal tool help do not reveal.
- The current instruction groups are:
- Desktop: window icons, Hyprland environment variables, and cursor settings.
- Firefox: search-engine declarations and extension-storage compatibility.
- Neovim: Nixvim package-set selection.
- AI tooling: Herdr key names and Pi configuration locations.
- Gotchas: registry APIs, guest boundaries, SOPS ownership, guest mounts, deployment, DNS, hardware, module paths, and host commands.
Decision tree
- Instruction review
- Settled: Review each complete instruction in source order.
- Registry conventions
- Settled: Create
src/skills/style/nix/rules/dotfiles.md. - Graphical application icon instruction
- Settled: Move the complete instruction to
src/skills/style/nix/rules/dotfiles.md.
- Settled: Move the complete instruction to
- Hyprland session environment instruction
- Settled: Remove it because
registry.envsuperseded it.
- Settled: Remove it because
- Firefox search-engine instruction
- Settled: Remove it because the Firefox module documents the configuration.
- Firefox extension-storage instruction
- Settled: Move it to a comment above
extensions.settingsinmodules/desktop/apps/firefox.nix.
- Settled: Move it to a comment above
- Neovim package-set instruction
- Settled: Move it to a comment above
nixpkgs.useGlobalPackagesinmodules/shell/nvim/default.nix.
- Settled: Move it to a comment above
- Herdr key-name instruction
- Settled: Remove it.
- Pi extension location instruction
- Settled: Remove it. It recorded a completed migration from NixOS-managed sources.
- Pi generated-settings instruction
- Settled: Remove it because the Pi module documents the managed boundary.
- Library-function qualification instruction
- Settled: Generalize it and move it to
src/skills/style/nix/rules/general.md.
- Settled: Generalize it and move it to
- Guest ownership instruction
- Settled: Move it to
src/skills/style/nix/rules/dotfiles.md.
- Settled: Move it to
- SOPS guest-owner instruction
- Settled: Move it to
src/skills/style/nix/rules/dotfiles.md.
- Settled: Move it to
- Nested guest-mount instruction
- Settled: Remove it because the example describes no active layout.
deploy-toinstruction- Settled: Remove it. Agents cannot complete its remote sudo steps.
- Pikachu deploy-closure instruction
- Settled: Remove it because
deploy-toencodes the required import path.
- Settled: Remove it because
- Public-DNS instruction
- Settled: Remove it.
- Hardware-configuration instruction
- Settled: Remove it because the root auto-generated-file rule owns the policy.
- Chaotic-cache instruction
- Settled: Remove it because
modules.host.cachyos.enableowns the cache configuration.
- Settled: Remove it because
- Module-relative-path instruction
- Settled: Remove it because Nix evaluation reports invalid paths.
- Pikachu
uptimeinstruction- Settled: Remove it because the command exposes its supported options.
- Guest-ACME-evaluation instruction
- Settled: Remove it because current direct guest evaluation succeeds.
- systemd executable instruction
- Settled: Remove it because
general.mdalready requireslib.getExe'for non-main executables.
- Settled: Remove it because
- Settled: Create
Frontier
The frontier is empty.
Shared understanding
Remove these instructions from configs/nixos/AGENTS.md:
- Hyprland session environment
- Firefox search engines
- Herdr shifted punctuation
- Pi extension source location
- Pi managed settings
- Nested guest mounts
deploy-tobehavior- Pikachu deploy closures
- Public DNS boundary
- Hardware configuration
- Chaotic cache selection
- Module-relative paths
- Pikachu boot time
- Guest ACME evaluation
- systemd executable selection
Move these instructions intact to src/skills/style/nix/rules/dotfiles.md:
- Graphical application icons
- Guest ownership
- SOPS guest ownership
Move the generalized library-function qualification convention to
src/skills/style/nix/rules/general.md.
Move these instructions to code comments:
- Firefox extension storage: above
extensions.settingsinconfigs/nixos/modules/desktop/apps/firefox.nix - Nixvim package set: above
nixpkgs.useGlobalPackagesinconfigs/nixos/modules/shell/nvim/default.nix
The review does not decide how to restore the auto-generated status of
configs/nixos/hosts/pikachu/hardware-configuration.nix.
The operator confirmed this design and authorized the edits.