dotfilesの管理をnixにした話
なぜnixを使おうと思ったか
なぜnixを使おうと思ったかというと、単純になんかみんな最近nix,nix言っているからです。みんな言ってたらそりゃ試したくなりますよ。 まだ学びたての意見ですが参考になれば幸いです。
何を管理するようにしたか
基本的に以下の管理をnixに移行しました
- dotfiles
- CLI-tool
- GUI-tool
- nvim-LSP
- nodejs
ディレクトリ構成
わたしのdotfiles(nix限定)は、以下のファイル構成で管理しています
.
├── flake.nix
├── flake.lock
├── nix
│ ├── CLAUDE.md
│ ├── README.md
│ ├── shared.nix
│ ├── cachix.nix
│ ├── modules
│ │ ├── darwin
│ │ │ ├── system.nix
│ │ │ └── darwin.nix
│ │ ├── tools
│ │ │ ├── packages
│ │ │ │ ├── base.nix
│ │ │ │ ├── dev.nix
│ │ │ │ ├── cli.nix
│ │ │ │ ├── gui.nix
│ │ │ │ └── default.nix
│ │ │ └── program
│ │ │ └── gh
│ │ │ └── gh.nix
│ │ └── home-manager
│ │ ├── symlinks.nix
│ │ ├── linux.nix
│ │ ├── darwin.nix
│ │ └── tools-read.nix
│ └── overlays
│ ├── default.nix
│ ├── node-packages.nix
│ ├── nix-index.nix
│ └── ai-tools.nix
具体的にどのように使っているか
私はlinuxはhome-managerで、macOSはnix-darwin & home-managerで管理しています。 もともとnixで管理する理由がマルチシステム対応にできることとpackages.nixで管理しているパッケージを一瞬で見ることができるから使っているという面もあります。
| コンポーネント | Linux, ARM-linux | macOS |
|---|---|---|
| システム設定 | home-manager | nix-darwin |
| ユーザーパッケージ | home-manager | home-manager (nix-darwin統合) |
| シェル | fish | fish |
ですが1つ問題があったんです。それはあまりにもログが気持ちよくない そのために使っているのが、nix-output-monitorというものを使っています。 これは、今何をインストールしているかなどがひと目で見ることができます。 そして何より、ログ見てて気持ちいい=素晴らしい!
cachixは使おうと思ったのですが、今の自分にはあまり必要性を感じられなかったので使っていません。
https://github.com/maralorn/nix-output-monitor
管理しているパッケージ一覧
{ pkgs }:
with pkgs;
[
#Editor
neovim
vscode
zed
#shell
fish
zsh
bash
starship
#CLI tools
jq
bat
trash-cli
curl
wget
zoxide
tree
htop
fastfetch
neofetch
onefetch
eza
file
which
fzf
node2nix
tmux
uv
ncdu
delta
tldr
bottom
just
xh
# nix
nix-tree
direnv
cachix
niv
# docker
docker
lazydocker
#development, langs
stylua
bun
deno
nil
nixd
pkgs.nixfmt
rustc
rust-analyzer
python312
nodejs_24
pnpm
#package tools
cargo
cmake
ninja
#github
bit
git
gh
ghq
lazygit
git-wt
gitui
#AGENT
kiro-cli
#GUI software
wezterm
audacity
spotify
discord
ghostty
tor-browser
]
使っているCLIツールについての紹介は https://zenn.dev/nazozokc/articles/e8037db23d97a5 の記事で紹介しています。
ですが1つ、めちゃめちゃ良かったので紹介したいのがfzfという、ファイル検索ツールです。なんと行ってもUIがおしゃれです。そして組み合わせ方が豊富です。 自分はfzf + cdを組み合わせてディレクトリ移動のために利用しています。めっちゃ便利だからこれからCLIを使う皆さんはぜひ使ってみましょう!!
まとめ
いかがでしたでしょうか?今回は私が初心者ながら実際にどのようにnixを使っているかを紹介しました、コードはほぼAIなんですけどねw。 今回の記事が少しでも皆さんの役に立てば幸いです 記事はファイルの中身や使い方が変わったら更新しようと思います。
https://github.com/nazozokc/dotfiles
今回の記事はこのレポジトリで公開しています。間違っている場所があればissueを立てていただければ幸いです。 https://github.com/nazozokc/zenn-repo