NixはLinuxやUnix向けのパッケージマネージャーです。ぱっと5つメリットをあげるとこんなところでしょうか。
- 様々なLinuxディストリビューションやmacOSで使える
- 再現性がありロールバックも可能
- 入れたいパッケージごとに依存関係を独立して管理するので、Aを入れるにはBのバージョンアップが必要みたいな問題が起きない
- 特定のプロジェクト(ディレクトリ)ごとに使うパッケージを変えられる
- 設定ファイルも含めた構成管理ソフトウェアとしても使える
最近、スリーシェイクに転職して、職場のPCがmacOSになりました。以前は仕事もプライベートもmanjaro linuxで統一していたのでとりあえずparu
を使えばよかったのですが、そうも言ってられないので、Nixを使ってみることにしました。
ちょっとずつ慣れてきたので感想を箇条書きしておきます。
- パッケージ管理のコマンドが統一されるのは快適
- NixさえあればOKとはなかなかいかない
- なんやかんやmacOS未対応なパッケージがある
- GUIのインストールは他のパッケージマネージャーを使うほうがいいことも
- macOSにnixでwezterm(ターミナル)を入れると、Dockからの起動の挙動がイマイチ
- 設定で
front_end = "WebGpu"
にしないと文字列が全部豆腐になる - DockにWeztermを入れて起動すると、標準のターミナル経由の起動になり、画面が2つ立ちあがってしまう
- そのくせWeztermを閉じても標準のターミナルは終了してくれない
- 設定で
- Linuxにweztermを入れると、なんか起動時にクラッシュする
- macOSにnixでwezterm(ターミナル)を入れると、Dockからの起動の挙動がイマイチ
- 特定のバージョンのパッケージのインストールはハードルが高い
- いきなり構成管理もするのはやめておいた方がいいかも
- とりあえずhome-managerを入れてみたものの、Nix言語やらFlakeやら覚えることが多過ぎる
- 雰囲気でやったらneovim-nightlyの導入でめちゃめちゃ躓いた
- 素直にNix言語とかの勉強したほうがいい
- なんかRのパッケージ管理に躓いた
install.packages("blogdown")
してblogdown::serve_site()
したらエラーになるError in dyn.load(file, DLLpath = DLLpath, ...) : unable to load shared object '/home/atusy/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/libs/Rcpp.so': /nix/store/kl05kz98gyqzrjm16j9j9pfbm3gp4s2b-gfortran-13.3.0-lib/lib/libstdc++.so.6: version `CXXABI_1.3.15' not found (required by /home/atusy/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/libs/Rcpp.so)
nix経由でもblogdownをインストールできるが、利用するにはライブラリの読み込み設定が必要
# .Rprofileに入れておく .libPath(file.path(Sys.getenv("HOME"), ".nix-profile/library"), .libPaths())
とりあえずプライベートPCはhome-manager
での管理を進めてみるつもりです。慣れてきたら仕事のPCもnix-darwin
なるものを入れてみようと思います。