diff --git a/docs/TODO.md b/docs/TODO.md index fab6e15..157d245 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -18,6 +18,7 @@ - amazon / actualbudget exporter - vim-obsidian-markdown - dictionary cli tool +- repo-local Nix style linter - kitchen.md # migration diff --git a/src/dotfiles/default.nix b/src/dotfiles/default.nix index 9915d1b..d012438 100644 --- a/src/dotfiles/default.nix +++ b/src/dotfiles/default.nix @@ -19,6 +19,15 @@ let root = root + "/modules"; }; + specialArgs = { + inherit + inputs + self + util + ; + registry = registry.collected; + }; + guestModules = import ./guests.nix { inherit inputs @@ -30,15 +39,6 @@ let repositoryModules = modules; root = root + "/guests"; }; - - specialArgs = { - inherit - inputs - self - util - ; - registry = registry.collected; - }; in { formatter.${system} = diff --git a/src/skills/nix-style/rules/let.md b/src/skills/nix-style/rules/let.md index 8ebf157..7012562 100644 --- a/src/skills/nix-style/rules/let.md +++ b/src/skills/nix-style/rules/let.md @@ -5,9 +5,11 @@ ### Rule Do not add a `let` binding only to let sibling values share one expression. +Apply this rule only when one sibling value clearly owns the concept. When one sibling value owns the concept, reference that sibling value directly. When a flake output owns the public value, reference that output through `self`. Do not make an output attrset recursive only to reference sibling outputs. +Do not apply this rule when a binding names a local constant used to keep sibling assignments in sync. ### Rationale @@ -25,4 +27,5 @@ Use forward references only for intentional recursion or fixed-point wiring. Nix permits recursive `let` bindings. Top-down dependency order makes ordinary wiring easier to read. +This rule can become a linter rule because binding references are mechanically detectable.