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.mdとconfig/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がインストールされていること
git clone https://github.com/rito528/dotfiles.git ~/dotfiles
cd ~/dotfiles./setup.shNix をインストールした場合は、シェルを再起動するか以下を実行してください:
. /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/config に core.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 フックで実行)。
ファイルの配置は home.nix の home.file で宣言的に管理されています。
config/ 配下の運用ルールは config/AGENTS.md、配置方針や各サブディレクトリの意味は config/README.md と配下の README を参照してください。
# 設定を適用
home-manager switch --flake .
# ドライランで確認(実際には変更しない)
home-manager build --flake .
# 世代の一覧
home-manager generationsプロジェクトごとに独立した 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プロジェクトディレクトリに .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 は、プロジェクトディレクトリに .envrc を対話的に生成するコマンドです。
このリポジトリで管理されているテンプレート一覧を取得し、選択した内容で .envrc を作成します。
# プロジェクトディレクトリで実行
nix-init-env- fzf がインストールされている場合はインタラクティブに選択できます
localを選択するとuse flake(ローカル flake 参照)が生成されます- それ以外を選択すると
use flake 'github:rito528/dotfiles#<template>'が生成されます .envrcが既に存在する場合は上書き確認を行います- 生成後、
direnv allowを実行するか確認します