NixOSとmacOS (Darwin)用の個人dotfiles。標準的なNix flakeを使用して構成されています。
.
├── systems/ # システム設定
│ ├── nixos/ # NixOS設定
│ │ ├── configurations/ # マシン別設定
│ │ │ └── homeMachine/ # NixOSマシン設定
│ │ └── modules/ # NixOSモジュール
│ │ ├── services/ # サービス設定
│ │ │ ├── monitoring.nix # 監視スタック
│ │ │ ├── dashboards/ # Grafanaダッシュボード
│ │ │ └── ...
│ │ └── ...
│ └── darwin/ # macOS (Darwin)設定
│ ├── configurations/ # マシン別設定
│ └── modules/ # Darwinモジュール
├── home/ # Home Manager設定
│ ├── profiles/ # ユーザープロファイル
│ │ ├── bunbun/ # bunbunユーザー設定
│ │ └── shinbunbun/ # shinbunbunユーザー設定
│ └── modules/ # Home Managerモジュール
│ ├── development/ # 開発ツール
│ ├── shell/ # シェル関連
│ └── security/ # セキュリティツール
├── shared/ # 共有設定
│ └── config.nix # 中央設定ファイル
├── devshell/ # 開発環境
│ └── default.nix # Nix開発シェル
├── secrets/ # SOPS暗号化シークレット
├── terraform/ # Terraform設定
│ └── README.md # Cloudflare Infrastructure as Code
├── docs/ # ドキュメント
└── flake.nix # Flakeエントリーポイント
- Nix 2.4以降(flakesサポート付き)
- SOPS(シークレット管理用)
- Age(暗号化用)
-
Nix flakesを有効化:
echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf
-
開発環境に入る:
nix develop
開発環境では以下のツールが利用可能です:
- Nix開発ツール: nix, nixpkgs-fmt, alejandra
- SOPS関連: age, sops, ssh-to-age
- Terraform関連: terraform, terraform-ls, cf-terraforming
- Cloudflare環境変数: SOPSから自動読み込み
-
NixOS設定を適用:
sudo nixos-rebuild switch --flake .#homeMachine
-
Nix flakesを有効化:
echo "experimental-features = nix-command flakes" >> ~/.config/nix/nix.conf
-
開発環境に入る:
nix develop
開発環境では以下のツールが利用可能です:
- Nix開発ツール: nix, nixpkgs-fmt, alejandra
- SOPS関連: age, sops, ssh-to-age
- Terraform関連: terraform, terraform-ls, cf-terraforming
-
Darwin設定を適用:
darwin-rebuild switch --flake .#macbook
base- 基本的なシステム設定(ブート、Nix設定、ユーザー、NTP)networking- ネットワーク設定(ファイアウォール、Avahi)security- セキュリティ設定(PAM、Polkit、SOPS)kubernetes- Kubernetesツールと設定nfs- NFSサーバー設定system-tools- システムツール(polkit、wireguard-tools)wireguard- WireGuard VPN設定vscode-server- VS Code Server設定(リモート開発環境)- services/ - サービス設定
- 監視・ログ分析スタック:
monitoring- Prometheus、Grafana、Node Exporter監視スタックalertmanager- アラート管理とDiscord通知loki- ログ集約システムpromtail- ログ収集エージェント(全ホスト)clickhouse- 高速分析データベースanomaly-detection- Isolation Forestによる異常検知
- バックアップ・同期:
obsidian-livesync- Obsidian LiveSync設定routeros-backup- RouterOS設定の自動バックアップ
- 管理・アクセス系:
cockpit- Webベースのシステム管理ツールttyd- Webベースのターミナルエミュレータauthentik- IdP(Identity Provider)unified-cloudflare-tunnel- Cloudflare Tunnel統合設定
- 監視・ログ分析スタック:
base- macOS基本設定とHomebrewoptimise- Nixストア最適化設定wireguard- WireGuard VPN設定
ai-tools- AIツール(claude-code)cloud-tools- クラウドツール(Google Cloud SDK)development-tools- 開発ツール(cocoapods - macOSのみ)editors- エディタ設定(vim)
shell-tools- シェル関連ツール(zsh、starship、direnv、lsd)version-control- Git設定
security-tools- セキュリティツール(age、sops)
このプロジェクトには、包括的な監視とログ分析のインフラが含まれています:
各ホスト → Promtail → Loki(homeMachine) → ClickHouse(nixos-desktop)
↓
Grafana(homeMachine) ← ClickHouse(nixos-desktop)
- Loki (homeMachine): ログの集約と短期保存(14-30日)
- Promtail (全ホスト): systemd-journaldからのログ収集
- ClickHouse (nixos-desktop): 長期保存と高速分析(30-180日)
- 異常検知 (nixos-desktop): 5分ごとのIsolation Forest実行
- Grafana (homeMachine): 統合ダッシュボードと可視化
詳細はログ分析基盤設計書を参照してください。
このプロジェクトでは、CloudflareのインフラをTerraformで管理しています。
- DNS Records: Cloudflare Tunnel向けCNAMEレコード
- Access Applications: Cloudflare Access アプリケーション登録
詳細はTerraform READMEを参照してください。
# 開発シェルに入る(Cloudflare環境変数が自動読み込みされます)
nix develop
# Terraformディレクトリに移動
cd terraform
# 初期化
terraform init
# 変更内容を確認
terraform plan
# 変更を適用
terraform applyshared/config.nixファイルで以下の設定を管理:
- ユーザー名とホームディレクトリ
- ネットワーク設定(ホスト名、IPアドレス、ポート)
- SSH設定
- WireGuard VPN設定
- その他のサービス設定
shared/config.nixに必要な設定を追加systems/nixos/configurations/またはsystems/darwin/configurations/に新しいマシン設定ディレクトリを作成default.nixファイルを作成し、必要なモジュールをインポートflake.nixのnixosConfigurationsまたはdarwinConfigurationsに新しいマシンを追加
このプロジェクトではSOPSとAgeを使用してシークレットを管理しています。
-
Age鍵を生成:
age-keygen -o ~/.config/sops/age/keys.txt -
.sops.yamlに公開鍵を追加 -
シークレットを暗号化:
sops secrets/your-secret.yaml
age.keyFile = "/var/lib/sops-nix/key.txt";
鍵ファイルが正しい場所にあることを確認してください。
nix flake checkエラーメッセージを確認し、必要に応じてnix fmtを実行してください。
MIT License