Open6
盆栽活動
- neovim の設定を、vim script から luaに変更
- lsp client をcocから、builtin client に変更
- asdf, homebrew をやめる
- package 管理は、devboxに変更
- 言語処理系は、miseに変更
BEFOREで気になっていた点
Homebrewは豊富にパッケージが利用できるし手軽。ただ、複数の環境でシュッと同じ状態を作ることは面倒だと感じていた。Brewfileを利用すれば、パッケージを一覧管理できるが、面倒くさがりの私は、このBrewfileに記述することなく、インストールしたパッケージがたくさんあった。
また、asdfは、.tool-versions でパッケージを一覧管理できるのでこれで管理しようとしていたが、asdfで入れられないパッケージもあり、全てのパッケージをこちらに寄せきれなかった。また、さくっと特定バージョンのプログラミングを試すのに、miseと比べると手順が多く煩わしく感じた。
AFTERの希望
改めて考えてみると、neovim, ghq, fzfなど手元の開発環境の身の回り品は、安定して動作して欲しいと思った。そして、どの環境であっても同じように動作してほしい。キーボードを持ち歩いて生活するのと同じ。いつも同じように安心して、プログラミングしたい。
検討に挙がったもの
- asdfをやめて、homebrewに戻し、Brewfileに寄せ切る。運用がんばる。
- 運用でカバーできないから、複数環境で同じ状態を作ることに苦労している今がある。頑張るのはやめる。
-
home-manager
- dotfilesを置き換える目的に合致しそう。
- 設定ファイルの書き方が、Devboxに比べ、nixの学習が必要になりそう。
- jetfiy.comのDevbox
- devbox globalを使えば、dotfilesを置き換えできそう。⇒自分はできた。
- home-managerと違い、JSONで簡潔に設定できて楽そう。
- .devcontainerやDockerファイルの生成など、応用が効きやすい作りになってそう。
yaml と json の lsp を入れた。JSON Schemaを指定しておけば、validateしてくれる。
- Net::SSLeayをインストールするために、libressl をソースからインストールした。
# tar.gz はここにある。
https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/
curl -O https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.6.1.tar.gz
# ダウンロードしたアーカイブを解凍
tar -xzf libressl-3.6.1.tar.gz
cd libressl-3.6.1
# configureスクリプトの実行
./configure --prefix=/usr/local/libressl
# makeコマンドでコンパイル
make
# インストール(sudo権限が必要な場合があります)
sudo make install
export OPENSSL_PREFIX="/usr/local/libressl"
# 他の関連する環境変数も設定
export PATH="$OPENSSL_PREFIX/bin:$PATH"
export LDFLAGS="-L$OPENSSL_PREFIX/lib"
export CPPFLAGS="-I$OPENSSL_PREFIX/include"
- DBD::postgres や DBD::msyqld をインストールするために、postgres, mysqlをdevbox globalでインストールした。
- brew prefix みたいなことを、nix で一発でする方法がわからなくて、愚直な書き方になった。
export OPENSSL_PREFIX="/usr/local/libressl"
export PATH="$OPENSSL_PREFIX/bin:$PATH"
export PGDATA=$DEVBOX_GLOBAL/virtenv/postgresql/data
export PGHOST=$DEVBOX_GLOBAL/virtenv/postgresql
export MYSQL_UNIX_PORT=$DEVBOX_GLOBAL/virtenv/mysql80/run/mysql.sock
export MYSQL_PID_FILE=$DEVBOX_GLOBAL/virtenv/mysql80/run/mysql.pid
export MYSQL_BASEDIR=$DEVBOX_GLOBAL/nix/profile/default
export MYSQL_HOME=$DEVBOX_GLOBAL/virtenv/mysql80/run
export MYSQL_DATADIR=$DEVBOX_GLOBAL/virtenv/mysql80/data
# To build Net::SSLeay
export LDFLAGS="-L$OPENSSL_PREFIX/lib"
export CPPFLAGS="-I$OPENSSL_PREFIX/include"
zstd_version=`zstd --version | perl -nl -e 'print $1 if /v([\d\.]+)/'`
zstd_store=`nix-store --query --references $(which zstd) | grep "zstd-$zstd_version$"`
mysql_store=`nix-store --query --references $(which mysql) | grep "mysql-wrapped"`
# To build DBD::mysql
export LIBRARY_PATH="$mysql_store/lib:$zstd_store/lib:$LIBRARY_PATH"