NixOSでroswell経由でQlotを使う方法
まとめ
Qlotを使用したいなら、roswellはこちらを参考に手動ビルドしたものを使うと良いです。
原因
NixOSでroswellを入れてqlot install
をすると、謎のエラーとともに終了します。
これの理由としてNixで入るroswellとQlotが背景で行っている処理が関係します。
Nixで入るroswellについて
Nix経由で入れたroswellは一部の引数が正しく動作しないようです。その一つとして+Qフラグがあります。+Qフラグを用いるとquicklispなしで処理系が立ち上がるのですが、なぜかNixで入れたroswellだとそうなりません。
# quickloadがなぜか動く ros run +Q -e '(ql:quickload :qlot)'
Qlotが背景ですることについて
qlot install
を実行したときに最初の方で行う処理として、新しいプロジェクト用のquicklispのインストールがあります。
quicklispのインストールでは、インストールスクリプトをシェルコマンド経由で実行します。
このスクリプトは、+Qフラグを渡してroswellに渡してquicklispを除いた処理系の上で実行されます。
これは、quicklispのインストールスクリプトを実行したときに、すでに環境にquicklispが入っているとインストールを中断するためです。
結論
Qlotは処理中でquicklispをインストールします。 quicklispのインストールはすでに環境にquicklispが入っているとインストールが中断されるため、+Qフラグを渡したroswellで実行しています。 しかし、Nixで入ったroswellは+Qフラグを正しく処理しないために、quicklispのインストールが中断されるわけです。
以上の原因により、Nix以外の方法でroswellは導入する必要があります。 幸いにroswellの公式がNixOS向けのインストール手順を公開しているのでそちらを利用しましょうインストール手順へのリンク。