k1000dai の dotfiles です。
現在の主入口は script/setup.sh です。セットアップ方式は次の優先順で自動選択されます。
nixが入っていれば nix backend を選び、home-manager switch --flakeで適用nixが入っていなければ、対応環境かつsudoが使える場合にmulti-user nixを install するか確認- Linux で install を選ばない、または
multi-user nixを使えない環境ならpixiベースの非 sudo フローへ fallback
script/update.sh は install を提案しません。nix 環境では flake update + home-manager switch --flake を実行し、Linux で nix がなければ pixi 側の symlink 再生成と pixi global sync を実行します。
nixが使える環境ではhome-managerを優先する- 非 sudo 環境では
pixi globalと symlink で運用できるようにする - 既存ファイルに衝突した場合は
*.bak.<timestamp>に退避してからリンクする - macOS は
nix/home-managerを基本経路にする - Linux の非 sudo 環境は
pixi globalと symlink で運用できるようにする
| 環境 | system | backend |
|---|---|---|
| macOS Apple Silicon | aarch64-darwin |
nix / home-manager |
| Ubuntu / Linux | x86_64-linux |
nix または pixi (config/pixi/manifests/pixi-global-linux.toml) |
この repo を clone して移動します。
git clone git@github.com:k1000dai/dotfiles.git ~/.dotfiles
cd ~/.dotfiles初回セットアップは次を実行します。
./script/setup.shこのスクリプトは backend に応じて次を行います。
nixがあればそれを使うhome-managerCLI が必要nixがなければ、条件を満たすときだけmulti-user nixinstall を提案するhome-manager switch --flake ".#<target>"で Home Manager 設定を反映- repo 管理の npm global CLI を
~/.localに同期する
この repo では pixi backend は Linux 向けです。macOS では nix / home-manager を使います。
uvを~/.local/binに installpixiを~/.pixi/binに install- dotfiles を
~/.configや~/.zshrc/~/.bashrc/~/.gitconfigへ symlink ~/.pixi/manifests/pixi-global.tomlを repo 内 manifest にリンクpixi global syncを実行して CLI ツール群を導入nvim --headless "+Lazy! sync"を実行して Neovim plugin を同期- repo 管理の npm global CLI を
~/.localに同期する
セットアップ後は新しい shell を開くか、必要なら次を実行します。
source ~/.zshrcnix が未導入のとき、確認を出さずに pixi へ寄せたいとき:
INSTALL_NIX=0 ./script/setup.shLinux で常に pixi backend を使いたいとき:
BOOTSTRAP_BACKEND=pixi ./script/setup.shnix install を確認なしで試したいとき:
INSTALL_NIX=1 ./script/setup.shLinux の pixi フローで変更確認だけしたいとき:
DRY_RUN=1 BOOTSTRAP_BACKEND=pixi ./script/setup.shLinux の pixi フローで uv / pixi の再 install を避けたいとき:
SKIP_TOOL_INSTALL=1 BOOTSTRAP_BACKEND=pixi ./script/setup.shLinux の pixi フローで link の再生成だけ先にやり、pixi global sync は後で回したいとき:
SKIP_PIXI_SYNC=1 BOOTSTRAP_BACKEND=pixi ./script/setup.shSKIP_PIXI_SYNC=1 のときは Neovim plugin の headless sync もスキップされます。
dotfiles や依存の更新反映は次です。
./script/update.shbackend ごとの動作は次の通りです。
nixbackend:nix flake update nixpkgsのあとhome-manager switch --flakeで再適用pixibackend: Linux で symlink を再生成し、最新 manifest に合わせてpixi global syncと Neovim plugin sync
update.sh は nix 未導入時に install 確認を出しません。Linux ではそのまま pixi 側の更新へ進み、macOS では nix を用意してから再実行してください。
nix backend は home-manager CLI を前提にします。setup.sh 実行時に home-manager が見つからない場合は、Home Manager の standalone + flakes の公式手順を確認して導入してから再実行してください。
- Home Manager installation: https://github.com/nix-community/home-manager#installation
pixi 側で差分確認だけしたい場合:
DRY_RUN=1 BOOTSTRAP_BACKEND=pixi ./script/update.shmanifest は次にあります。
config/pixi/manifests/pixi-global-linux.toml
現在は主に以下を pixi global で管理します。
- shell / CLI:
zsh,fzf,ripgrep,bat,zoxide,tmux,yazi,wget,pueue,fd-find - git 周辺:
git,git-lfs,gh,ghq,lazygit - Python 周辺:
python,uv,ruff - editor / LSP 周辺:
nvim,node,bash-language-server,dockerfile-language-server,go,gopls,lua-language-server,marksman,taplo,ty,typescript-language-server,clangd,vscode-langservers-extracted,yaml-language-server
次のようなものは pixi global manifest にはまだ寄せていません。
unar(conda-forgeに同名 package がないため。必要なら nix 側か system package、またはp7zip/libarchive系の代替 CLI を使う)rust-analyzer- フォントや GUI アプリ
- sudo や system package manager が必要なもの
npm -g install で管理したい CLI は次で管理します。
config/npm/npm-global-packages.txt
この manifest は setup.sh / update.sh から npm install -g --prefix ~/.local ... で同期されます。npm の default prefix は使わず、nix / pixi の管理領域を汚さないように ~/.local へ固定しています。
現在の管理対象:
@openai/codex@latest(codexは更新追従を優先して npm 側で管理)happy
@anthropic-ai/claude-code は Anthropic 公式が curl native installer を推奨しているため npm 側ではなく script/lib/bootstrap-common.sh の sync_claude_code (curl -fsSL https://claude.ai/install.sh | bash) で ~/.local/bin/claude に導入されます。setup.sh / update.sh の両方から自動で同期されます。
Python 系の standalone CLI は uv tool で ~/.local/bin に導入します。
uv tool install huggingface_hubhuggingface_hub(hfコマンド)
| パス | 内容 | リンク先 / 反映方法 |
|---|---|---|
script/setup.sh / script/update.sh |
統合 bootstrap / 更新反映 | - |
flake.nix, home*.nix |
Nix / Home Manager 設定 | home-manager switch --flake |
config/nvim |
Neovim 設定 | ~/.config/nvim |
config/lazygit |
Lazygit 設定 | ~/.config/lazygit |
config/ghostty |
Ghostty 設定 | ~/.config/ghostty |
config/wezterm |
WezTerm 設定 | ~/.config/wezterm (nix のみ) |
config/herdr/config.toml |
herdr 設定 | ~/.config/herdr/config.toml (ファイル単位リンク。~/.config/herdr/ はランタイム状態を持つためディレクトリごとリンクしない) |
config/yabai / config/skhd |
macOS の WM / hotkey | ~/.config/yabai / ~/.config/skhd |
config/claude/ |
Claude Code 設定 | ~/.claude/settings.json は out-of-store link で編集即反映 |
config/ai-agents/ |
AI agent 共通指示 (INSTRUCTIONS.md) と skills |
~/.claude/CLAUDE.md, ~/.claude/skills (out-of-store link) |
config/codex/AGENTS.md |
Codex 指示 | ~/.codex/AGENTS.md |
config/git/shared.gitconfig |
Git 共通設定 (user / alias / ghq / lfs) | nix: programs.git.includes / pixi: root .gitconfig から include |
.gitconfig |
pixi backend 用エントリ (共通設定を include + credential) | ~/.gitconfig (pixi のみ) |
config/pixi/manifests/ |
Linux 用 pixi global manifest |
~/.pixi/manifests/pixi-global.toml |
config/npm/npm-global-packages.txt |
npm global CLI manifest | npm install -g --prefix ~/.local |
.zshrc, .zshrc.d, .bashrc |
shell 設定 | nix: zsh は .zshrc_extra 経由 / pixi: 直接リンク |
.tmux.conf |
tmux 設定 | ~/.tmux.conf |
keyboard/ |
Vial キーボード設定 (cornix) のエクスポート | Vial から手動で読み込み |
repo 自体のチェックは pre-commit で行います。
pre-commit run --all-filesnixfmt(nix ファイル)、shellcheck(shell script)、標準 hooks (行末空白・EOF 改行など)nixfmt/shellcheckは nix backend ではhome.nixで導入されます
CI (GitHub Actions, .github/workflows/build.yml) は push / PR ごとに darwin / linux の homeConfigurations をビルドし、依存の破損を早期検知します。
Nix / Home Manager の設定ファイルは引き続き repo に含めています。
flake.nixhome.nixhome-darwin.nixhome-linux.nix
nix が使える環境ではこちらが第一経路です。macOS は multi-user nix を優先し、Linux の HPC や非 sudo 環境では pixi backend を明示的に使うか、nix install をスキップして fallback させます。