Install nix on Mac
2022/03
所要時間:1h ~ 1.5h?
Nixとdirenvを使った開発環境を作る
nixはnix-envをbetter Homebrewとして使えるのでいろいろものを入れられる
direnvはプロジェクトごとにnix使ってインストールするということができる
試してないのでちゃんといけるかわかんない
まずインストールする
code:sh
$ sh <(curl -L https://nixos.org/nix/install)
macの場合defaultでmulti userモードになる
諸記事で言及されているようにMacではルートの読み取り専用ファイルにうにゃうにゃするせいでいろいろあったっぽい
これに対応した結果multi userと認識されてしまうのでsingle userモードはないということです
https://nixos.org/manual/nix/stable/installation/installing-binary.html#multi-user-installation
実行するとやたら丁寧にinstallを実行してくれる
これが業界標準か?
Elmより丁寧
インストール中に/etc/bashrcと/etc/zshrcを変更してnixの設定ファイルを読み込むようにしてくれる
code:bashrc
# Nix
if -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ; then
. '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
fi
# End Nix
わたしの環境だとこれが/etc/bashrcに挿入されていた
bash, zshのひとはそのままいけると思う
fishのひとはnix-env.fishを使うと読み込んでくれる
任意のshell環境のひとは上を参考にして読む込むようにしてくれ
channelについて
code:sh
sudo -i nix-channel --list
-> nixpkgs https://nixos.org/channels/nixpkgs-unstable
multi userモードで入れたのでrootにunstableチャンネルが入ってると思います。多分
direnvを入れる
nix-envでインストールする。
nix-envは雑にbetter Homebrewと思ってよいです。世代管理できるHomebrew
code:sh
nix-env -iA nixpkgs.direnv
shellにhookする
リンクを参考にhookしてください
cdなどでディレクトリを移動した際にdirenvを起動して.envを読み込む設定を書いているんだと思う
nix-direnvを入れる
code:sh
nix-env -iA nixpkgs.nix-direnv
https://github.com/nix-community/nix-direnv#with-nix-env
code:~/.direnvrc
source ~/.nix-profile/share/nix-direnv/direnvrc
これを書いておく
nix.confにnix-shell用の設定を書く
用意されてないのでファイルから作る
code:~/.config/nix/nix.conf
# https://nixos.org/manual/nix/stable/command-ref/conf-file.html
keep-derivations = true
keep-outputs = true
今回はプロジェクトごとにnix-shell環境を立てたり閉じたりするのでビルドしたものがすぐ消えないように設定しておく
準備完了
これで準備は完了した
shell.nixが用意されたプロジェクトで.envrcを用意してuse nixを書いておくとプロジェクトのディレクトリに入ったときに.envrcを読み込んでいろいろインストールしてくれる
初回はdirenv allowしてくださいって言われる
その後
home-managerを使うとshell環境も含めてnixで管理できる
お好みでどうぞ