Skip to main content

ADR-001 — Two flakes, one direction of dependency

Status: Accepted

Context

The OS needs a stable, project-owned core and a mutable, user-owned package layer. Mixing them in a single flake forces the core to know about every package and makes glix write into the same surface a distro maintainer owns.

Decision

Ship a glixos-core flake (project-owned) and a separate user-packages flake (user-owned, generated by glix init). The user flake imports the core flake; the core flake never imports the user flake.

Consequences

  • glix only writes to the user flake. Core updates flow through nix flake update glixos-core (or glix update glixos-core).
  • Distro upgrades are atomic and reversible via the user flake's flake.lock.
  • Slight extra friction at install time (two repos in play), accepted.