flake: collapse host boilerplate; single-source deploy-node identity/domain#497
flake: collapse host boilerplate; single-source deploy-node identity/domain#497kclejeune wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4ec976cdbc
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| # that dotfiles.path and programs.nh.flake expect. | ||
| mise.bootstrap = { | ||
| enable = true; | ||
| repos."~/.nixpkgs".url = "https://github.com/kclejeune/system"; |
There was a problem hiding this comment.
Pin mise before enabling bootstrap repos
With the current flake lock, inputs.nixpkgs provides pkgs.mise 2026.6.13, but upstream only added path-keyed [bootstrap.repos] / mise bootstrap repos in v2026.6.14. Since the standalone Home Manager configs enable this repos table by default, a first home-manager switch there runs the older mise bootstrap --yes and will not clone ~/.nixpkgs, leaving the dotfiles/nh path that this block is meant to create absent unless the user manually updates mise or clones the repo. Please bump/override mise to a version with repo bootstrap support before relying on this table.
Useful? React with 👍 / 👎.
…domain - mkNixosHost helper supplies the shared system/specialArgs/baseline plumbing so each nixosConfigurations block lists only what makes the host distinct - standalone home-manager pkgs import now reuses _lib.mkNixpkgsArgs instead of restating the allow-flags + overlay it centralizes - deploy-rs nodes derive hostname domain from the node's own site.tailnetDomain and sshUser from its primary user, dropping the re-hardcoded literals Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01WFseTk1bUBrN1gYAJk6PB7
…n syncthing - shell.nix: remove the slinky shell-hook helper — both call sites were commented out, but the interpolation still rendered commented noise into every generated zshrc/bashrc - dev.nix: drop clang + cmake from the always-on set; they contradict its 'no heavy compilers' contract and already ship on desktop hosts via dev-interactive (headless hosts lose them intentionally) - darwin/syncthing.nix: delete — never enrolled by any host, declared a homeDir option its body never read, and its hand-rolled services.syncthing options would collide with the module nix-darwin now ships upstream the moment it was imported Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01WFseTk1bUBrN1gYAJk6PB7
New homeModules.mise renders mise's [bootstrap.*] tables (https://mise.jdx.dev/bootstrap.html) from typed nix options — packages, repos, shell activation, hooks, user settings, macOS defaults, linux systemd units, plus freeform escape hatches — through programs.mise.globalConfig, and runs 'mise bootstrap --yes' as a home-manager activation step (after writeBoundary, non-fatal by default so offline switches still succeed; --only/--skip/--update/ --force-dotfiles are exposed as options). Enabled for the standalone home configurations, where it converges the day-0 layer nix doesn't own — starting with the ~/.nixpkgs checkout that dotfiles.path and programs.nh.flake already assume exists. Co-Authored-By: Claude Fable 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01WFseTk1bUBrN1gYAJk6PB7
4ec976c to
31cd7a2
Compare
82d6620 to
5489fc0
Compare
plumbing so each nixosConfigurations block lists only what makes the
host distinct
instead of restating the allow-flags + overlay it centralizes
site.tailnetDomain and sshUser from its primary user, dropping the
re-hardcoded literals
Co-Authored-By: Claude Fable 5 [email protected]
Claude-Session: https://claude.ai/code/session_01WFseTk1bUBrN1gYAJk6PB7