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 フックで実行)。

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

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

home-manager の基本操作

# 設定を適用
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

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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors