Skip to content

metis: import desktop-env bundles (ADR-028 slice 3d)#60

Merged
dannyfaris merged 1 commit into
mainfrom
desktop-env/metis-import-bundles
May 28, 2026
Merged

metis: import desktop-env bundles (ADR-028 slice 3d)#60
dannyfaris merged 1 commit into
mainfrom
desktop-env/metis-import-bundles

Conversation

@dannyfaris

Copy link
Copy Markdown
Owner

Summary

First commit that imports the slice-3 desktop bundles into a real host. Two-line addition to hosts/metis/default.nix:

  • modules/core/nixos/bundles/desktop-env.niximports.
  • home/core/nixos/bundles/desktop-env.nixhostContext.extraHomeModules.

This is the integration test for the five prior slice-3 PRs:

PR State
3a — flake inputs #42 Merged
3b — system bundle #44 Merged
3c — home bundle #55 Merged
3b.5 — niri cachix in nix.settings #57 Merged
3b.5 CI half — extra_nix_config trust #59 Merged
3d — this PR this one Open

CI now trusts niri.cachix.org (via #59 on main), so this PR's flake-check actually exercises the desktop-env closure with the cache as substituter — no source-build of niri, no crates.io 403 cascade.

Expected closure delta on metis

niri (from niri.cachix.org), greetd + tuigreet, Quickshell + Qt6 + matugen + DMS deps, xdg-desktop-portal-gnome, polkit-kde-agent-1, gnome-keyring, Inter, Noto Color Emoji, foot. No regression expected on mercury or nixos-vm — neither imports the bundles.

Local verification caveat

dbf is not in nix's trusted-users on the operator's machine, so runtime substituter additions are rejected with warning: ignoring untrusted substituter. Local nix build .#nixosConfigurations.metis... would source-build niri. The integration test fires in CI where the GH Actions runner is trusted and the workflow declares extra-substituters.

No nh os switch here — that's slice 5.

Peer review

Reviewed against 8 checkpoints:

  1. Bundle placement reasonable (system import next to remote-access; home import grouped with shared bundles).
  2. No other host imports the bundle; no auto-discovery anywhere in the flake.
  3. Closure delta list verified against the four constituent slice-3 modules.
  4. nix flake check --no-build succeeds independent of cache trust (eval doesn't require fetching).
  5. CI matrix correctly scopes metis to x86_64-linux only — no aarch64 poisoning.
  6. CI ordering safe (now moot since ci: trust niri.cachix.org substituter in flake-check workflow (ADR-028) #59 is on main).
  7. Merge-order safety (also now moot).
  8. HM module order is cosmetic (option merge order-independent), no Stylix font conflicts, all pre-commit hooks no-op.

Test plan

  • Parse + treefmt clean.
  • nix flake check --no-build succeeds (eval).
  • Pre-commit hooks pass (deadnix, statix).
  • CI matrix green on x86_64-linux — the real integration test. niri pulled from niri.cachix.org; DMS + Quickshell + Qt6 closure built; foot + greetd added.
  • CI matrix green on aarch64-linux (no-op for this host).

Closes the ADR-028 slice 3 implementation. Slice 4 (DMS↔Stylix theme wiring) is tracked at #34; slice 5 (first activation on metis) at #35.

Refs: #33, ADR-028.

🤖 Generated with Claude Code

First commit that imports the slice-3 desktop bundles into a real host.
Two-line addition to hosts/metis/default.nix:

- modules/core/nixos/bundles/desktop-env.nix added to `imports`
  (alongside bundles/remote-access.nix).
- home/core/nixos/bundles/desktop-env.nix added to
  hostContext.extraHomeModules (after the shared theming bundle,
  before standalones).

This is the integration test for the four merged slice-3 PRs:
  - #42 (3a) — flake inputs
  - #44 (3b) — system bundle scaffold (niri + greetd + fonts + DMS bridge)
  - #55 (3c) — home bundle scaffold (niri binds + foot + DMS)
  - #57 (3b.5) — niri.cachix.org substituter in nix.settings

…plus the CI-side half currently in flight at #59 (extra_nix_config
in flake-check workflow). This branch is stacked on
desktop-env/ci-niri-cache-trust so the CI workflow trust is in place
when CI evaluates this PR.

Closure delta on metis (expected): niri (from niri.cachix.org), greetd
+ tuigreet, Quickshell + Qt6 + matugen + DMS deps,
xdg-desktop-portal-gnome, polkit-kde-agent-1, gnome-keyring, Inter,
Noto Color Emoji, foot. No regression expected on mercury or
nixos-vm — neither imports the bundles.

Local build verification not possible — dbf is not in nix's
trusted-users, so runtime substituter additions are rejected. The
integration test fires in CI where the GH Actions runner is trusted
and the workflow already declares extra-substituters via #59 (which
this branch inherits). No `nh os switch` here; that's slice 5.

Peer-reviewed (8 checkpoints: bundle placement, no auto-discovery,
closure delta sanity, eval-without-cache, CI matrix arch scoping, CI
ordering / branch base, merge-order safety, edge cases including HM
module order, Stylix font conflicts, pre-commit hooks).

Per ADR-028 §Implementation slice 3.
@dannyfaris dannyfaris enabled auto-merge (squash) May 28, 2026 11:28
@dannyfaris dannyfaris merged commit 10a2e68 into main May 28, 2026
4 checks passed
@dannyfaris dannyfaris deleted the desktop-env/metis-import-bundles branch May 28, 2026 11:34
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