Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions _sources/generated.nix
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,17 @@
};
date = "2021-07-16";
};
gh-pr-graph = {
pname = "gh-pr-graph";
version = "v0.14.5";
src = fetchFromGitHub {
owner = "orangain";
repo = "gh-pr-graph";
rev = "v0.14.5";
fetchSubmodules = false;
sha256 = "sha256-kSbtyDA52fYvcT0hd6SZ/1E6lA6j+wbsXEGzLhUy5gg=";
};
};
hydro = {
pname = "hydro";
version = "f130b55ee3eaf099eccf588e2a62e5447068d120";
Expand Down
14 changes: 8 additions & 6 deletions configs/.config/herdr/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,16 @@ description = "open bottom (resource monitor) in popup"
width = "90%"
height = "90%"

# gh dash — PR / issue の一覧を差し込みで開く。
# gh pr-graph — 自分が author / assignee / reviewer の PR を、base/head ブランチを
# たどった依存グラフとしてブラウザで開く。ローカル (127.0.0.1) にサーバを立てて
# ブラウザを起動し、Ctrl-C まで前面に居座るタイプなので popup ではなく pane で開く。
# popup は session-modal でブラウザを見ている間ずっと herdr 側がブロックされるが、
# pane なら他のペインを触りながらサーバを生かしておける (コマンド終了で pane も閉じる)。
[[keys.command]]
key = "prefix+ctrl+p"
type = "popup"
command = "gh dash"
description = "open gh dash in popup"
width = "90%"
height = "90%"
type = "pane"
command = "gh pr-graph"
description = "open gh pr-graph (PR dependency graph) in a temporary pane"

# scratch fish shell — 今のペインを汚さず 1 発コマンドを叩く用。
# exit で popup が閉じる。
Expand Down
22 changes: 22 additions & 0 deletions home-manager/programs/gh/common.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# 全ホスト共通の gh 設定。
# oberon は nixpkgs-stable (nixos-25.11) を使うため、ここには stable にも
# 存在するものだけを置く。unstable 限定の拡張は default.nix 側で足す。
{ pkgs, ... }:
{
programs.gh-prism.enable = true;

programs.gh = {
enable = true;
extensions = [
pkgs.gh-dash
pkgs.gh-poi
];
settings = {
git_protocol = "ssh";
prompt = "enabled";
aliases = {
co = ''!id="$(gh pr list -L100 | fzf | cut -f1)"; [ -n "$id" ] && gh pr checkout "$id"'';
};
};
};
}
32 changes: 15 additions & 17 deletions home-manager/programs/gh/default.nix
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
{ pkgs, ... }:
# darwin (nixpkgs unstable) 用の gh 設定。
{ pkgs, sources, ... }:
let
gh-pr-graph = import ./gh-pr-graph.nix { inherit pkgs sources; };
in
{
programs.gh-prism.enable = true;
imports = [ ./common.nix ];

programs.gh = {
enable = true;
extensions = with pkgs; [
gh-dash
gh-poi
gh-stack
];
settings = {
git_protocol = "ssh";
prompt = "enabled";
aliases = {
co = ''!id="$(gh pr list -L100 | fzf | cut -f1)"; [ -n "$id" ] && gh pr checkout "$id"'';
};
};
};
# ここに置く拡張が oberon に載らないのは意図的:
# - gh-stack は nixpkgs unstable にしか無い (nixos-25.11 には未収録)。
# - gh-pr-graph はローカルサーバを立ててブラウザを開くツールなので、
# ヘッドレスな oberon では使えない。
# programs.gh.extensions は list なので common.nix の定義とマージされる。
programs.gh.extensions = [
pkgs.gh-stack
gh-pr-graph
];
}
14 changes: 14 additions & 0 deletions home-manager/programs/gh/gh-pr-graph.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# gh pr-graph — 自分が関わる PR を base/head ブランチ単位のグラフで一覧する gh 拡張。
# nixpkgs 未収録なので nvfetcher + buildGoModule で自前ビルドする (tcmux と同じ形)。
# home-manager の programs.gh.extensions は pname をそのまま
# ~/.local/share/gh/extensions/<pname> に link farm するため、
# pname と $out/bin のバイナリ名を両方 "gh-pr-graph" に揃える必要がある。
{ pkgs, sources }:
pkgs.buildGoModule {
pname = "gh-pr-graph";
inherit (sources.gh-pr-graph) version src;
# go.mod に require が無い (依存ゼロ) ため vendoring 不要。
vendorHash = null;
subPackages = [ "cmd/gh-pr-graph" ];
ldflags = [ "-X main.version=${sources.gh-pr-graph.version}" ];
}
5 changes: 5 additions & 0 deletions home-manager/programs/gh/server.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# oberon (サーバー) 用の gh 設定。common.nix だけで完結する。
{ ... }:
{
imports = [ ./common.nix ];
}
2 changes: 1 addition & 1 deletion hosts/oberon/home.nix
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ in
../../home-manager/programs/direnv
../../home-manager/programs/fish/server.nix
../../home-manager/programs/fzf
../../home-manager/programs/gh
../../home-manager/programs/gh/server.nix
../../home-manager/programs/git/server.nix
../../home-manager/programs/htop
../../home-manager/programs/hunk
Expand Down
4 changes: 4 additions & 0 deletions nvfetcher.toml
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,7 @@ fetch.github = "k1LoW/tcmux"
src.git = "https://github.com/mattpocock/skills"
src.branch = "main"
fetch.github = "mattpocock/skills"

[gh-pr-graph]
src.github = "orangain/gh-pr-graph"
fetch.github = "orangain/gh-pr-graph"