このリポジトリは Linux / macOS / Windows (native) の3OS対応で dotfiles 管理を行う構成です。
- Linux / macOS / WSL: Nix + Home Manager で管理
- Windows (native): PowerShell 7 スクリプトで管理
- 設定ファイルは可能な限り共通化:
git/,starship/,lazygit/,bat/,nvim/,wezterm/は全OSで同一ファイルを共有
本dotfilesは私(nazozokc)が個人的に使用しているものです。
そのため、本番環境でのスクリプトの実行やconfigの使用は推奨しません。
本リポジトリに掲載した内容を使用したことに対するいかなる損害、損失、
またはそれに類するものに関して、私、及び貢献者は一切の責任を負わないものとし、
このリポジトリに掲載した内容を使用するユーザーはそれを理解したものとします。
- Linux:
x86_64-linux(Arch Linux など) - Linux:
aarch64-linux(ARM linux) - WSL:
x86_64-linux(WSL2) - macOS:
aarch64-darwin(Apple Silicon) - Windows: native (PowerShell 7 + scoop/winget)
- Nix がインストール済みであること
- インストール方法は下部の「Nix のインストール」を参照
- macOS の場合は Nix 2.15+ 推奨
- Linux / macOS 両方で
nixコマンドが使えること
# マルチユーザーインストール (sudo が必要)
sh <(curl -L https://nixos.org/nix/install) --daemon --yes
# シェルを再起動するかログインし直す
exec $SHELL# シングルユーザーインストール (推奨)
sh <(curl -L https://nixos.org/nix/install) --no-daemon
# またはマルチユーザーインストール
sh <(curl -L https://nixos.org/nix/install) --daemon --yes
# シェルを再起動するかログインし直す
exec $SHELLnix --version
nix-env --versioncd ~
git clone https://github.com/nazozokc/dotfiles.git
cd dotfiles
# Home Manager + pkgs の初回セットアップ
nix run .#switch- Linux / macOS 両方で
nix run .#switchだけで初回セットアップ可能 - Home Manager による dotfiles のリンクとパッケージインストールが行われます
- macOS では nix-darwin を通して Home Manager 設定も有効化されます
# dotfilesやパッケージ更新
nix run .#switch
# バージョン更新
nix run .#update- Linux は Home Manager 単体で管理
- macOS は nix-darwin を通して Home Manager を管理
- GUIアプリも Nix で管理可能
- 既存の PATH 環境を壊さず管理できます
- Windows 10 22H2+ または Windows 11
- PowerShell 7 (
winget install Microsoft.PowerShell) - 管理者権限は不要(scoop はユーザー権限で動作)
# 1. リポジトリをクローン
cd ~
git clone https://github.com/nazozokc/dotfiles.git
cd dotfiles
# 2. セットアップスクリプトを実行
pwsh -ExecutionPolicy RemoteSigned -File windows/setup.ps1スクリプトは以下を自動実行します:
- scoop のインストール(未導入の場合)
- scoop + winget でパッケージ一括インストール(neovim, git, starship, lazygit, wezterm など)
- 設定ファイルの symlink(
git/,starship/,lazygit/,bat/,nvim/,wezterm/→ Windows の適切なパス) - PowerShell 7 プロファイル のインストール
# PowerShell 7 を再起動(プロファイルを読み込む)
# または手動で読み込み
. $PROFILE- Windows Terminal の設定は
windows/terminal/settings.jsonを参照して手動で適用してください - フォントは JetBrainsMono Nerd Font が自動インストールされます
# scoop 全更新
scoop update && scoop update *
# winget 更新
winget upgrade --alldotfiles/
├── git/ # Linux/macOS/WSL/Windows で共有
│ ├── config # メイン設定
│ └── aliases # Git エイリアス
├── starship/starship.toml # 全OS共有
├── lazygit/config.yml # 全OS共有
├── bat/config # 全OS共有
├── nvim/ # 全OS共有 (既存)
├── wezterm/ # 全OS共有 (既存)
├── windows/ # Windows 専用
│ ├── setup.ps1 # セットアップエントリポイント
│ ├── install.ps1 # パッケージインストール
│ ├── link.ps1 # 設定ファイルリンク
│ ├── Microsoft.PowerShell_profile.ps1 # PowerShell 7 プロファイル
│ └── terminal/settings.json # Windows Terminal 設定(参考)
├── nix/ # Linux/macOS/WSL 専用 (Nix)
└── fish/ / zsh/ / bash/ # Linux/macOS/WSL 専用
- fish / zsh / tmux / ghostty / Hyprland は Windows では動作しないため対象外です
- sops-nix によるシークレット管理は Windows 未対応です
- Windows Terminal の
settings.jsonはマシン固有の GUID が含まれるため、参考値として提供しています
- シェル: fish
- エディタ: Neovim, VSCode 設定
- CLIツール:
nix/modules/home-manager/packages/default.nix - Home Manager: dotfiles (
.config/*), ホームディレクトリリンク管理 (checkFilesChanged,checkLinkTargets) - macOS限定: nix-darwin によるシステム設定
- OS本体やカーネルは pacman(Linux)や macOS 標準管理に任せる
- Home Manager によるリンクや設定は既存の dotfiles を上書きする場合があります
- PR では Nix Flake Check(
nix flake check)と treefmt check(nix fmt -- --ci)を必須とします。 - ローカルでも PR 前に次を実行してください。
nix flake check
nix fmt -- --ci- シークレットは
secrets/common.yamlを sops で暗号化して管理します。 - 展開先(Linux / WSL)は以下です。
api/github_token→~/.config/secrets/github_tokenapi/openai_api_key→~/.config/secrets/openai_api_keyapi/anthropic_api_key→~/.config/secrets/anthropic_api_key
- 鍵は
~/.config/sops/age/keys.txtを使用します。 secrets/common.yamlが存在しない場合、secret は読み込まれません(CIの非復号チェックを壊さないため)。
- 現在値は
nix/shared.nixのhome.stateVersion = "26.05";。 - 互換性維持のため、通常運用で上げない。
- 上げるのは以下を満たす場合のみ。
- Home Manager / nixpkgs 更新で新規 stateVersion が必要。
- 変更PRで
nix flake checkとnix run .#buildを通過。 - 既存dotfilesリンク・シェル起動・主要CLI(git, gh, nvim)動作確認を記録。
MIT