Skip to content

fix(gh): gh モジュールを common/default/server に分割し oberon のビルドを直す - #54

Merged
thinceller merged 1 commit into
claude/herdr-gh-dash-replace-7gncx4from
claude/gh-module-server-split
Aug 23, 2026
Merged

fix(gh): gh モジュールを common/default/server に分割し oberon のビルドを直す#54
thinceller merged 1 commit into
claude/herdr-gh-dash-replace-7gncx4from
claude/gh-module-server-split

Conversation

@thinceller

Copy link
Copy Markdown
Owner

概要

oberon (NixOS) の CI ジョブ build-nixos が落ちている問題を直す。#53 に stack した PR(base は claude/herdr-gh-dash-replace-7gncx4)。

直す問題

master でも #53 でも build-nixos が失敗している:

error: attribute 'gh-stack' missing
  at home-manager/programs/gh/default.nix:13:7

oberon は nixpkgs-stable (nixos-25.11) を使うが、gh-stack は nixpkgs unstable にしか存在しない。unstable を使う darwin 2 host では通るため、oberon だけが評価に失敗していた。25.11 channel で確認:

{ gh-dash = true; gh-poi = true; gh-stack = false; }

master 由来の既存の問題で、#53 が持ち込んだものではない(#53 でエラー文言が undefined variableattribute missing に変わったのは with pkgs; を明示的な pkgs.X に書き換えたためで、原因は同一)。

変更内容

claude-code / fish / git / opencode と同じ common.nix / server.nix の慣習に合わせて分割した。

ファイル 内容
gh/common.nix (新規) stable にも存在する gh-dash / gh-poi + settings + programs.gh-prism.enable
gh/default.nix common.nix を import し、darwin 用に gh-stackgh-pr-graph を追加
gh/server.nix (新規) oberon 用。common.nix だけ import
hosts/oberon/home.nix import 先を gh/server.nix に変更

programs.gh.extensionslistOf package なので、common.nixdefault.nix の定義はマージされる。

副次効果として、ローカルサーバを立ててブラウザを開く gh-pr-graph がヘッドレスな oberon に載らなくなる。これも意図した挙動。

検証

egress policy により flake input の GitHub tarball が取得できず nix eval .#darwinConfigurations... / nix build .#nixosConfigurations.oberon... は実行できないため、channel の nixpkgs(unstable / 25.11 の両方)を使って検証している。

home-manager の programs.gh 相当のオプション(extensionslistOf package)を宣言した最小モジュールに、実際の gh/default.nixgh/server.nix を食わせて lib.evalModules した結果:

extensions gh-prism settings
darwin (unstable, default.nix) [gh-dash gh-poi gh-stack gh-pr-graph] true 変更前と一致
oberon (stable, server.nix) [gh-dash gh-poi] true 変更前と一致
  • stable で gh-stack を要求しないことを確認(要求していれば eval が失敗する)
  • darwin の拡張が従来どおり 4 つで、順序も維持されていることを確認
  • home-manager と同じ linkFarm を両方でビルドし、拡張レイアウトを確認。darwin 側は この分割前に feat(gh): gh pr-graph を導入し herdr の gh dash keybind を置き換える #53 で確認したものと同一の store path (kxzfr4d0bg8xqda6bn6hhpmflckk83hp-gh-extensions) になり、darwin に対しては no-op であることが確定した
  • nixfmt --check が変更した nix ファイルすべてで通る

darwin / oberon 構成の最終的なビルドは CI に任せる。build-nixos が緑になることがこの PR のゴールなので、結果を見て必要なら追随する。


Generated by Claude Code

oberon (nixpkgs-stable / nixos-25.11) の `build-nixos` が
`attribute 'gh-stack' missing` で落ちていた。gh-stack は nixpkgs unstable に
しか無く、unstable を使う darwin 2 host では通るが stable の oberon では
評価に失敗する。master から続く既存の問題。

claude-code / fish / git / opencode と同じ common.nix / server.nix の慣習に
合わせて gh モジュールを分割する。

- gh/common.nix: stable にも存在する gh-dash / gh-poi + settings + gh-prism
- gh/default.nix: common.nix を import し、darwin 用に gh-stack と
  gh-pr-graph を追加 (extensions は list なのでマージされる)
- gh/server.nix: oberon 用。common.nix だけ
- hosts/oberon/home.nix: import 先を gh/server.nix に変更

副次効果として、ローカルサーバを立ててブラウザを開く gh-pr-graph が
ヘッドレスな oberon に載らなくなる。これも意図した挙動。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QYmZcVLWwWwJ1MvuTSy2xs
@thinceller
thinceller marked this pull request as ready for review August 23, 2026 12:57
@thinceller
thinceller merged commit 5430696 into claude/herdr-gh-dash-replace-7gncx4 Aug 23, 2026
4 checks passed
@thinceller
thinceller deleted the claude/gh-module-server-split branch August 23, 2026 12:57
thinceller added a commit that referenced this pull request Aug 23, 2026
* feat(gh): gh pr-graph を導入し herdr の gh dash keybind を置き換える

gh pr-graph (orangain/gh-pr-graph) は自分が author / assignee / reviewer の
PR を横断で集め、base/head ブランチを再帰的にたどって stacked PR の依存関係を
グラフとして描く gh 拡張。フラットな PR 一覧では見えないレビュー順や下流の
作業が一目で分かるので、herdr の `prefix+ctrl+p` を gh dash から置き換える。

- nixpkgs 未収録なので nvfetcher + buildGoModule で自前ビルドする (tcmux と同形)。
  go.mod に require が無いため vendorHash = null。
- home-manager の programs.gh.extensions は pname をそのまま
  ~/.local/share/gh/extensions/<pname> に link farm するため、
  pname と $out/bin のバイナリ名を "gh-pr-graph" に揃えている。
- gh pr-graph は TUI ではなく 127.0.0.1 にサーバを立ててブラウザを開き、
  Ctrl-C まで居座る。popup は session-modal でブラウザ閲覧中ずっと herdr を
  ブロックしてしまうため、keybind の type は popup ではなく pane にした。
- gh dash 自体は CLI から使えるよう extensions には残す。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QYmZcVLWwWwJ1MvuTSy2xs

* fix(gh): gh モジュールを common/default/server に分割し oberon のビルドを直す (#54)

oberon (nixpkgs-stable / nixos-25.11) の `build-nixos` が
`attribute 'gh-stack' missing` で落ちていた。gh-stack は nixpkgs unstable に
しか無く、unstable を使う darwin 2 host では通るが stable の oberon では
評価に失敗する。master から続く既存の問題。

claude-code / fish / git / opencode と同じ common.nix / server.nix の慣習に
合わせて gh モジュールを分割する。

- gh/common.nix: stable にも存在する gh-dash / gh-poi + settings + gh-prism
- gh/default.nix: common.nix を import し、darwin 用に gh-stack と
  gh-pr-graph を追加 (extensions は list なのでマージされる)
- gh/server.nix: oberon 用。common.nix だけ
- hosts/oberon/home.nix: import 先を gh/server.nix に変更

副次効果として、ローカルサーバを立ててブラウザを開く gh-pr-graph が
ヘッドレスな oberon に載らなくなる。これも意図した挙動。


Claude-Session: https://claude.ai/code/session_01QYmZcVLWwWwJ1MvuTSy2xs

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
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