Nix + Home Manager + Flakes で管理する dotfiles
- Nix: 再現性のあるパッケージ管理
- Home Manager: ユーザー環境(dotfiles含む)の宣言的管理
- Flakes: 依存関係のロックと再現性の確保
Linux / macOS の両方に対応。
~/.dotfiles/
├── flake.nix # エントリーポイント
├── flake.lock # 依存関係のバージョンロック
├── nix/
│ └── home/
│ ├── default.nix # Home Manager共通設定
│ ├── packages.nix # パッケージ一覧
│ ├── git.nix # Git設定
│ ├── tmux.nix # Tmux設定
│ ├── zsh.nix # Zsh設定
│ └── neovim.nix # Neovim設定
├── nvim/ # Neovim設定(lua)
├── bin/ # カスタムスクリプト
└── zsh/ # Zsh追加設定
git clone https://github.com/s4kr4/dotfiles ~/.dotfiles
cd ~/.dotfiles
make installこれで以下が自動的に実行されます:
- Nix のインストール(Determinate Systems installer)
- Home Manager の適用(OS自動判定)
インストール完了後、シェルを再起動してください。
個別に実行する場合:
make nix # Nixのみインストール
make home-manager # Home Managerの適用のみcd ~/.dotfiles
home-manager switch --flake .#s4kr4@linux -b backupnix flake update# 世代一覧
home-manager generations
# ロールバック(世代パスを指定)
/nix/store/xxx-home-manager-generation/activate# Nix LSP + フォーマッターが使える環境
nix develop| ツール | 説明 |
|---|---|
| bat | catの代替(シンタックスハイライト付き) |
| eza | lsの代替(モダンな表示) |
| fd | findの代替(高速) |
| fzf | ファジーファインダー |
| ripgrep | grepの代替(高速) |
| ghq | Gitリポジトリ管理 |
| gwq | Git worktree管理 |
| gh | GitHub CLI |
| tig | Git TUI |
| lazygit | Git TUI |
| jq | JSON処理 |
- zsh-autosuggestions
- zsh-syntax-highlighting
- enhancd(cd拡張)
- fzf integration
- direnv + nix-direnv
- Neovim + LSP(lua-language-server, nil, typescript-language-server, pyright 等)
nix/home/packages.nix を編集:
home.packages = with pkgs; [
# 追加したいパッケージ
your-package
];nix/home/zsh.nix の shellAliases を編集:
shellAliases = {
myalias = "some-command";
};flake.nix に新しい homeConfigurations を追加:
homeConfigurations = {
"username@hostname" = home-manager.lib.homeManagerConfiguration {
pkgs = pkgsFor "x86_64-linux";
# ...
};
};MIT