nix-shellでprojectごとに環境をsetupする
$ nix-shell --pure shell.nixを実行するだけで必要な環境がすぐに揃う
仮にそれがHaskell projectだとしても、JS projectだとしても、nix-shellのコマンドを1発打てば、globalを汚さずに環境を作れる
仮にそのprojectの内部でRubyとJSの両方を使っていようとも問題ない
一般的に言語ごとのtoolchainを入れるのは大変だが、
その手間がそもそもなくなり、
さらにversion違いなどによるerrorもなくなる
projectの新規作成時にすること
$ echo "use nix" >> .envrc
$ direnv allow
code:.gitignore
# nix
.direnv
/direnv
nix-shellがないとき
例えばチームで作っているprojectが、
serverとしてRailsを、frontendとしてJSを、DBにMySQLを、と使っていると
これらの実行環境を作るために、rbenvやgem、nvmやnpmなど諸々を用意してversionを揃える必要がある
これらの問題は、チームメンバー間だけでなく、dev環境/prod環境の間でも生じる
冗長だし、大変
例
このprojectを実行するためには、
Rubyの環境
いくつかのgem package
が必要だが、globalにrubyやgemがなくともコマンド一発で揃う
VSCode
言語ごと
Python
Python, Rust, Ruby, NodeJS
elixir, erlang, hex