Skip to content

Replace the module symlinks with generic entries - #156

Merged
clhodapp merged 2 commits into
mainfrom
refactor/no-module-symlinks
Nov 12, 2026
Merged

clhodapp merged 2 commits into
mainfrom
refactor/no-module-symlinks

Conversation

@clhodapp

Copy link
Copy Markdown
Contributor

No path under modules/ is a symlink after this change.

Changes

  • The options of caisson move from modules/generic/core to modules/generic/caisson, with its files in one directory. The core module of every class is a real module that imports that entry, as the flake and structural cores already did.
  • The top-level caisson.checks option is its own generic entry, top-level-checks. Only the cores of classes with a single system import it, so the flake and structural cores no longer import it and then remove it with disabledModules.
  • The modules that several classes shared through symlinks are generic entries: activation-marker, hjem-activation, home-manager-activation and profile-activation (previously under nixos, linked from systemManager and darwin), and drift-warning (previously nvf/default, linked from nixvim/default). The nvf and nixvim default modules import drift-warning.
  • The system-manager-parent alias is removed. The system-manager default module imports nixos-parent, which reads a NixOS or a system-manager configuration.
  • The two tops export every generic entry instead of only core.

Breaking change

The registry names of the moved entries change: modules.nixos.hjem-activation is now modules.generic.hjem-activation, and the same for the other three activation modules, modules.nvf.default keeps its name, and system-manager-parent no longer exists in homeManager and hjem. I found no use of the old names in the workspace repositories.

Checks

Passing locally: nix-unit, pinned-world, registries, eval-weight, treefmt, hjem-system, module-class-export-success, composition-success, minimal-consumer-success, lib-consumer-chain-success, nixpkgs-consumer-success, pkg-overlays-registry-consumer, pkg-overlays-registry-producer, literate-flake-default, argument-errors, deferred-errors and drift-message. The VM checks returned without building anything, so they may not exercise this change.

PR #153 edits modules/generic/core/types.nix, which is now modules/generic/caisson/types.nix, so one of the two needs a rebase after the other merges.

🤖 Generated with Claude Code

No path under modules/ is a symlink any more.

caisson's options move from modules/generic/core to modules/generic/caisson,
and the core module of every class is a real module that imports that
entry, as the flake and structural cores already did. The top-level
`caisson.checks` option moves to its own generic entry, top-level-checks,
which only the cores of classes with a single system import. The flake
and structural cores therefore no longer import it and disable it with
disabledModules.

The modules that several classes shared through symlinks are generic
entries: activation-marker, hjem-activation, home-manager-activation and
profile-activation (previously under nixos, linked from systemManager and
darwin) and drift-warning (previously nvf/default, linked from
nixvim/default). The nvf and nixvim default modules import drift-warning.
The system-manager-parent alias is gone, and the system-manager default
module imports nixos-parent.

The registry names of the moved entries change, and the tops export every
generic entry.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@clhodapp clhodapp self-assigned this Nov 12, 2026
@clhodapp
clhodapp merged commit 3d9e52c into main Nov 12, 2026
9 checks passed
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