Extract rpickler's home config into richardpickler.com/home-rpickler (external home-manager flake) #36

Open
hermes-bot wants to merge 5 commits from external-home-rpickler-flake into main
Member

Implements the structure requested in sees.ai/SeesDeployment#16 ("create a PR on nixos for the repository to use a similar structure").

What moves where

rpickler's home configuration — the persona (users/users/rpickler.nix), its module tree (users/modules/{hyprland,wezterm,neovim/**,opencode,sops,backup}.nix, monochrome.json) and the per-host layouts that lived as "@kansas"-style keys — moves verbatim into its own flake: richardpickler.com/home-rpickler (public, so flake consumers can fetch it; sops files/secrets stayed here).

home-rpickler exports module sets and owns no system:

  • hmModules.rpickler — home-manager module list (persona + identity.nix + dormant backup-seam.nix)
  • byHost."<hostname>" — per-machine overlays (users/hosts/), replacing the "@host" keys

What stays

The household glue is unchanged in shape: users/users/default.nix still assembles per-user homes and per-host selection — it just sources inputs.home-rpickler.hmModules.rpickler ++ byHost.<hostname> for rpickler. akrol/ninap stubs, modules/{home,gnome,other,default,firefox} and users/hosts/ keep working untouched. All of home-rpickler's pins follow this flake, so the persona evaluates against the same nixpkgs/inputs as before the split (useGlobalPkgs stays coherent).

Same structure the SeesDeployment workstation-flake/ aggregator consumes (its users/rpickler.nix adapter uses the identical hmModules/byHost surface) — one personal flake, two consumers.

Verification

  • nix flake update home-rpickler locks cleanly (all follows edges resolve).
  • Full home-config merge evaluates through the external persona on all three systems that use it:
    nix eval .#nixosConfigurations.{sausage,kansas,pumpkin}.config.home-manager.users.rpickler.home.activationPackage.name → "home-manager-generation" (forces every option of the extracted tree: firefox, nixvim, walker, hyprland/wezterm modules, host overlays).

Fidelity notes (documented seams, details in home-rpickler README/comments)

  • modules/default.nix in home-rpickler is an args-shim (_module.args.inputs); its gnome.nix import was dead on the hyprland persona and is not imported there (kept in this repo for akrol/ninap).
  • sops.nix/backup.nix are dormant in home-rpickler (backup-seam.nix); encrypted secrets never left this repo. Re-enabling on a machine is one imports edit once the sops file is placed by the system layer.
  • kansas monitor list carried over without mkForce (TODO in home-rpickler:users/hosts/kansas.nix — flag if any system module ever declares monitors).
Implements the structure requested in [sees.ai/SeesDeployment#16](https://git.richardpickler.com/sees.ai/SeesDeployment/issues/16) ("create a PR on nixos for the repository to use a similar structure"). ## What moves where rpickler's home configuration — the persona (`users/users/rpickler.nix`), its module tree (`users/modules/{hyprland,wezterm,neovim/**,opencode,sops,backup}.nix`, `monochrome.json`) and the per-host layouts that lived as `"@kansas"`-style keys — moves **verbatim** into its own flake: **[richardpickler.com/home-rpickler](https://git.richardpickler.com/richardpickler.com/home-rpickler)** (public, so flake consumers can fetch it; sops files/secrets stayed here). home-rpickler exports module sets and owns no system: - `hmModules.rpickler` — home-manager module list (persona + `identity.nix` + dormant `backup-seam.nix`) - `byHost."<hostname>"` — per-machine overlays (`users/hosts/`), replacing the `"@host"` keys ## What stays The household glue is unchanged in shape: `users/users/default.nix` still assembles per-user homes and per-host selection — it just sources `inputs.home-rpickler.hmModules.rpickler ++ byHost.<hostname>` for rpickler. `akrol`/`ninap` stubs, `modules/{home,gnome,other,default,firefox}` and `users/hosts/` keep working untouched. All of home-rpickler's pins `follow` this flake, so the persona evaluates against the *same* nixpkgs/inputs as before the split (`useGlobalPkgs` stays coherent). Same structure the SeesDeployment `workstation-flake/` aggregator consumes (its `users/rpickler.nix` adapter uses the identical `hmModules`/`byHost` surface) — one personal flake, two consumers. ## Verification - `nix flake update home-rpickler` locks cleanly (all `follows` edges resolve). - Full home-config merge evaluates through the external persona on all three systems that use it: `nix eval .#nixosConfigurations.{sausage,kansas,pumpkin}.config.home-manager.users.rpickler.home.activationPackage.name` → `"home-manager-generation"` (forces every option of the extracted tree: firefox, nixvim, walker, hyprland/wezterm modules, host overlays). ## Fidelity notes (documented seams, details in home-rpickler README/comments) - `modules/default.nix` in home-rpickler is an args-shim (`_module.args.inputs`); its `gnome.nix` import was dead on the hyprland persona and is not imported there (kept in this repo for akrol/ninap). - `sops.nix`/`backup.nix` are dormant in home-rpickler (`backup-seam.nix`); encrypted secrets never left this repo. Re-enabling on a machine is one `imports` edit once the sops file is placed by the system layer. - kansas monitor list carried over without `mkForce` (TODO in `home-rpickler:users/hosts/kansas.nix` — flag if any system module ever declares monitors).
The persona (users/users/rpickler.nix), its module tree (users/modules/
hyprland, wezterm, neovim, opencode, sops, backup, monochrome.json) and
the per-host layouts (formerly "@host" keys) move verbatim into their own
flake, richardpickler.com/home-rpickler — the "external home-manager
flake" structure (sees.ai/SeesDeployment issue #16).

The household keeps the glue unchanged: users/users/default.nix still
assembles per-user homes (now sourcing hmModules.rpickler +
byHost.<hostname> from the input), akrol/ninap stubs keep the local
path, modules/{home,gnome,other,default,firefox} stay for them.
home-rpickler's pins all follow this flake (single nixpkgs, same as
before the split).

Verified: nix flake update home-rpickler locks cleanly;
nixosConfigurations.{sausage,kansas,pumpkin}
  .config.home-manager.users.rpickler.home.activationPackage
all evaluate through the external persona.
# Conflicts:
#	users/modules/neovim/plugins/codecompanion.nix
#	users/modules/neovim/plugins/default.nix
#	users/modules/neovim/plugins/telescope.nix
#	users/modules/neovim/plugins/treesitter.nix
Author
Member

Sync checkpoint for 838fce0 (merge of main + flake.lock: home-rpickler → 5788485, so the persona carries the merged neovim slice-4 / telescope work):

  • nix eval .#nixosConfigurations.pumpkin.config.home-manager.users.rpickler — GREEN: home.username=rpickler, 22 home packages, persona resolving through the external flake at the pinned rev.
  • Non-blocking: evaluation warns nixvim: flake output homeManagerModules has been renamed to homeModules. Harmless for now; worth renaming the reference when nixvim pins next roll forward.

All consumer pins (nixpkgs, nixpkgs-unstable, home-manager, firefox-addons, nixvim, sops-nix, elephant, walker, llm-agents) follow this flake, so the persona evaluates against exactly the same instances it used pre-extraction. No further changes needed from my side — ready for your review.

Sync checkpoint for `838fce0` (merge of main + `flake.lock`: home-rpickler → `5788485`, so the persona carries the merged neovim slice-4 / telescope work): - `nix eval .#nixosConfigurations.pumpkin.config.home-manager.users.rpickler` — GREEN: `home.username=rpickler`, 22 home packages, persona resolving through the external flake at the pinned rev. - Non-blocking: evaluation warns `nixvim: flake output homeManagerModules has been renamed to homeModules`. Harmless for now; worth renaming the reference when nixvim pins next roll forward. All consumer pins (`nixpkgs`, `nixpkgs-unstable`, `home-manager`, `firefox-addons`, `nixvim`, `sops-nix`, `elephant`, `walker`, `llm-agents`) follow this flake, so the persona evaluates against exactly the same instances it used pre-extraction. No further changes needed from my side — ready for your review.
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin external-home-rpickler-flake:external-home-rpickler-flake
git switch external-home-rpickler-flake

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff external-home-rpickler-flake
git switch external-home-rpickler-flake
git rebase main
git switch main
git merge --ff-only external-home-rpickler-flake
git switch external-home-rpickler-flake
git rebase main
git switch main
git merge --no-ff external-home-rpickler-flake
git switch main
git merge --squash external-home-rpickler-flake
git switch main
git merge --ff-only external-home-rpickler-flake
git switch main
git merge external-home-rpickler-flake
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
richardpickler.com/nixos!36
No description provided.