Skip to content

pointy.deps: declare dependent pointy repos and mount outputs under namespaces - #4

Open
ggPeti wants to merge 4 commits into
mainfrom
multi-repo
Open

pointy.deps: declare dependent pointy repos and mount outputs under namespaces#4
ggPeti wants to merge 4 commits into
mainfrom
multi-repo

Conversation

@ggPeti

@ggPeti ggPeti commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Stdlib-side machinery for one pointy user repo to import another as a dependency, with no backend changes (single-repo variant).

  • flakeModules.default gains pointy.deps (namespace → { input, repo? }, repo optional).
  • outputs.pointy.deps — backend registry contract (namespace → { input, repo? }), pure metadata of the repo's own committed state; does not force dependency evaluation.
  • outputs.pointy.namespaces.<ns> — mounts a dependency's pointy output (stepDefs/stepConfig/templates/projects/presets/srcFiles/deps) under a namespace; per-system packages.<system>.pointy.namespaces.<ns> additionally exposes its built steps/projectOutPaths/autocomplete.
  • Descriptive throws for unknown / non-pointy dep inputs.

Verification

  • nix flake check passes.
  • Two-flake harness: a dependent flake's #pointy.deps, #pointy.namespaces.<ns>.stepDefs, and per-system steps reach the dependency; unknown-input namespace throws the expected error.
  • pointy-welker (real repo) evaluates #pointy.deps, #pointy.namespaces, #pointy.stepConfig (16 template types), #pointy.projects under this stdlib with deps = {}.

backend added 4 commits August 5, 2026 13:53
…nder namespaces

- flakeModules.default gains pointy.deps (namespace -> { input, repo? })
- outputs.pointy.deps: backend registry contract (lazy, own-state-only)
- outputs.pointy.namespaces.<ns>: dependency pointy domain output mount
- packages.<sys>.pointy.namespaces.<ns>: + built steps/projectOutPaths/autocomplete
- helpful throws for unknown/non-pointy dep inputs
- guard input=self (injected by withDefaultNixpkgs) with a descriptive throw
  instead of a stack overflow
- strip the dependency fakeDrv markers (type/name) from the per-system
  namespace merge so #pointy.namespaces.<ns> is a clean pointy surface
- default stepDefs/templates/projects/srcFiles to {} so deps-only hub repos
  evaluate (#pointy.stepConfig etc.)
- README: correct the per-system steps path (#packages.<system>.pointy...
  not #pointy.packages...) and describe the namespace surface accurately
- verified via consumer harness: clean namespace root, reachable built steps,
  deps-only stepConfig={}, self-dep descriptive error
- depOutput comment: resolve to the flake input (not 'output'), which is what
  it actually returns
- rename depsJson -> depsContract (it is an attrset, not JSON; matches the
  Backend contract comment and #pointy.deps framing)
- fix mangled 'stepDefs/templates / projects' comment list, drop 'co-managed'
- README: drop leaked fakeDrv name, restructure the shadowing bullet, reword
  the stale single-repo-backend-variant paragraph
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant