Skip to content

rito528/dotfiles

Repository files navigation

dotfiles

home-manager を使用した Linux (Ubuntu / WSL) 環境向けの dotfiles リポジトリです。

概要

  • 対象OS: Linux (Ubuntu / Windows Subsystem for Linux)
  • ファイル管理: home-manager (Nix Flake)
  • パッケージ管理: Nix + home-manager
  • シークレット管理: Doppler (GPG/SSH キーも含む)
  • シェル: zsh

リポジトリ構成

  • home.nix / modules/: Home Manager の設定と配備定義の正本。機能ごとに Nix モジュールを分割して管理しています。
  • config/: home-manager が ~ 以下に配置する設定ファイルの正本。Claude Code 設定・AI スキル定義などを含みます。詳細は config/AGENTS.mdconfig/README.md を参照してください。
  • .agents/skills/: リポジトリローカルの共有 AI スキル定義(Codex / Claude / Copilot などが参照)。
  • .claude/: Claude Code ローカル設定。skills.agents/skills/ へのシンボリックリンクです。
  • .githooks/: このリポジトリ専用の Git hooks の正本。
  • install/: セットアップスクリプト群。setup.sh がエントリポイントです。
  • templates/: プロジェクトごとの Nix 開発環境テンプレート。
  • .github/workflows/: CI 定義。lint・ビルド検証・E2E テストなどを含みます。

セットアップ手順

前提条件

  • Ubuntu / Debian 系 Linux または WSL
  • curl がインストールされていること

1. リポジトリをクローン

git clone https://github.com/rito528/dotfiles.git ~/dotfiles
cd ~/dotfiles

2. セットアップスクリプトを実行

./setup.sh

3. シェルを再起動

Nix をインストールした場合は、シェルを再起動するか以下を実行してください:

. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh

個別のスクリプトを実行する場合

各インストールスクリプトは単体でも実行可能です(冪等性あり):

# Ubuntu パッケージのみインストール
./install/ubuntu/packages.sh

# Nix のみインストール
./install/common/nix.sh

# home-manager 設定の適用のみ
./install/common/home-manager.sh

管理対象の設定

カテゴリ ソースファイル 展開先
Shell modules/shell.nix (programs.zsh) 宣言的管理 (ファイルなし)
Git hooks .githooks/pre-commit このリポジトリの .git/configcore.hooksPath=.githooks を設定
Codex modules/codex.nix ~/.codex/config.toml~/.codex/rules/default.rules
Claude Code config/claude/ ~/.claude/
Claude skills config/agents/skills/ ~/.claude/skills~/.agents/skills へのシンボリックリンク
Shared AI skills .agents/skills/ リポジトリローカルで各エージェントから参照

このリポジトリの Git hooks は .githooks/ を正本とし、./install/common/setup-local-hooks.sh が repo-local の core.hooksPath を設定します。

シークレット検出には gitleaks を使用しています(このリポジトリでは pre-commit フックで実行)。GitHub Actions workflow の検証には actionlint を使用しています。

ファイルの配置は home.nixhome.file で宣言的に管理されています。

config/ 配下の運用ルールは config/AGENTS.md、配置方針や各サブディレクトリの意味は config/README.md と配下の README を参照してください。

home-manager の基本操作

# 設定を適用
home-manager switch --flake .

# ドライランで確認(実際には変更しない)
home-manager build --flake .

# 世代の一覧
home-manager generations

Codex と Claude Code から Grafana MCP を使う

mcp-grafana は Nix パッケージとしてインストールされ、Codex と Claude Code が同じ 起動設定を使います。起動時に Doppler から必要な環境変数を受け取り、読み取り専用 モードで Grafana に接続します。あらかじめ Doppler CLI へログインしてください。

  1. Grafana に最小限の RBAC 権限を持つ Service Account を作成し、トークンを発行します。
  2. Doppler の project mcp、config prdGRAFANA_URLGRAFANA_SERVICE_ACCOUNT_TOKEN の 2 変数だけを登録します。
  3. Home Manager の設定を反映して、各クライアントから MCP サーバーを確認します。

トークンの値を dotfiles に保存したり、Codex の親プロセスに設定したりしません。

home-manager switch --flake .
codex mcp list
claude mcp list

Codex と Claude Code を再起動した後、それぞれの /mcp でも接続状態を確認できます。

Grafana Cloud ではスタックの URL を GRAFANA_URL に設定します。ホスト上の Grafana へ接続する場合は、http://localhost:3000 のような URL を指定できます。

--disable-write は誤操作を防ぐための補助策であり、Grafana 側の RBAC に代わるものでは ありません。MCP サーバーは必須扱いにしていないため、Doppler や Grafana への接続に 失敗しても Codex や Claude Code 全体の起動は止まりません。

mcp-grafana を更新するときは、modules/grafana-mcp.nix のバージョンと hash を同時に更新してください。

開発環境テンプレート

プロジェクトごとに独立した Nix 開発環境を提供するテンプレートを管理しています(templates/ 参照)。

Neovim の Treesitter parser runtime は 2 層で管理します。

  • Home Manager:
    • lua, markdown, markdown_inline, json, yaml, toml のような共通 grammar を配る
  • template devShell:
    • rust, sql, typescript, javascript, scala, hcl のような project 固有 grammar を追加する

Neovim 本体の設定正本は modules/neovim/ にあります。

自分のプロジェクトで使う場合

# プロジェクトディレクトリで初期化(例)
nix flake init -t github:rito528/dotfiles#seichi-infra

direnv との連携

プロジェクトディレクトリに .envrc を作成することで、ディレクトリに入ると自動的に開発環境が有効になります:

# テンプレートで初期化したプロジェクトの場合
echo "use flake" > .envrc
direnv allow

# dotfiles のテンプレートを直接参照する場合
echo "use flake 'github:rito528/dotfiles?dir=templates/rust'" > .envrc
direnv allow

.envrc はプロジェクト固有の設定のため、global gitignore に追加することを推奨します。

nix-init-env コマンド

nix-init-env は、プロジェクトディレクトリに .envrc を対話的に生成するコマンドです。 このリポジトリで管理されているテンプレート一覧を取得し、選択した内容で .envrc を作成します。

# プロジェクトディレクトリで実行
nix-init-env
  • fzf がインストールされている場合はインタラクティブに選択できます
  • local を選択すると use flake(ローカル flake 参照)が生成されます
  • それ以外を選択すると use flake 'github:rito528/dotfiles#<template>' が生成されます
  • .envrc が既に存在する場合は上書き確認を行います
  • 生成後、direnv allow を実行するか確認します

About

No description, website, or topics provided.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors