4/20に開催されたNix meetup #5 ミニへの参加から、2ヶ月以上経過してしまっていますが、せっかくなので参加記書いておこうと思います。
Nix meetupとは?
Nix meetupとは"純粋関数型パッケージマネージャー Nix 及び NixOS を始めとするそのエコシステムに関するオフラインの勉強会"で、入門時の苦労話からかなりマニアックな内容までバラエティ豊かな内容の発表を聴くことができます。
私はというと、前々回の大阪開催のNix meetup #3 大阪に初めて聴講onlyで参加しました。 当時はNixは本当に少し触れた程度でしたが、Vim界隈と非常に距離が近いからか、かなり楽しめました。
ですが今回は、ちょうどいいタイミング(ネタがあるタイミング)で開催の告知があったため、発表者として参加しました!。
各発表&発表者について
kenhouさん: 2 Months of NixOS
なんと発表は、NixOSを入れたPanasonicのタフブックです!。 私は、ネタとして、タフブックで"スタバなう"する人は存在するのだろうか?などと考えたことがありますが、このような例を観測すると十分に考えられそうですね。
タイトル通り、Nixに触れて2ヶ月という内容で苦労したポイントなどにフォーカスが当てられていました。 先程のタフブックやタフブック、ホームラボ等幅広い用途で使われているみたいですね。
ローカルLLMをNixOSで動かす話もあり、かなり特徴的でした。 後の懇親会で本人に話を聞いてみると、llama.cppでローカルLLMする苦労話など(OpenCLだとVullkanよりも性能が出ないとか…)沢山の面白い話ができました。
aki(私): runwasi を NixOSで動かす
私の行なったこの内容についてはまた後ろで触れるので一旦ここではスキップします。
tositadaさん: nixos azurevm
AzureでNixOSを動かすという話でした。
何かビルドする時にflakeに必要なものを探す時に参考にするのはプロジェクトのsetup.shというのは私もそうでした!(そもそも、それ以外に参考にできるものはないですよね…)。
公式ではサポートされていないものを自分で動かすというのは中々スリリングで面白いものですね。
choplinさん: Rapid AI-driven development workflows with Nix
ここまで、三人とも、NixOSでの話でしたが、macOSでの話です。
これまでは、Homebrew,chezhmoi,miseで開発環境を構築してきたが、Nixを使うことで一つに統一できるという点でNixにやって来たとのことです。
Nixを使うと言っても、nix-dawinは限定的な使用に留め、一部はHomebrewのままにしたりとバランス重視な印象です。
また、AI エージェントの暴走からの防御のためにmicro VMを作成してそこに閉じ込めるという話も印象的でした。
自分(Aki)の発表について
初めて発表してみて
今回はこのような技術系イベントでは初めての発表で、同時にSway + NixOSなラップトップで行う発表としても初めての機会でした。
デフォルトの挙動では、接続されたモニターまたはプロジェクーがミラーリングになるWindowsマシンでの発表経験はそれなりにありまたしが、そうはならないLinux デスクトップ環境なため以下のような点で戸惑いました。
- Swayでは外部モニターが接続されると、そのモニタに新たなワークスペースが割り当てられる。
- なので、ラップトップの画面を見て発表資料の調整ができない。
- となると、大きいモニターを見て調整することになるので辛い。
- さらに、今回は接続したモニタの解像度が高く、 ポインタを見失ってしまった。
この問題は、ミラーリングするようなモードに切り換えられれば解決しそうに思えます
(5月末のKernel/VMでの発表準備の過程で解決法を発見しましたkanshiを使う方法です)。
発表内容
肝心の内容ですが、nixpkgsで提供されていないパッケージであるrunwasiをなんとかビルドしてnerdctlから動かすというものです。
スライドでは、試行錯誤した様子を描いていますが、結局
- cargoによるRustのビルドは案外C/C++のビルドも走っている
- グローバルにインストールされた共有ライブラリを読みに行こうとする
が原因なことです。
ビルドして得られたバイナリをcontainerdより実行する場面では、プラスして、
systemdで動いているサービス特有のややこしい問題があるらしいこと(このへんの詳しいことは現在勉強中です)
もありました。
ビルドを通すのはとても大変でしたが、今後もこのようなソフトウェアを自分でビルドしたい場面では大いに約に立ちそうな経験だと思います。
発表を振り返ってみて
以下のような感じです。
- スライドはかなり荒削りだった。
- 試行錯誤のライブ間が伝わった印象。
- とはいえ、もう少し作り込みたかった。
- “うまい"資料を見て色々と学習したいと思った。
Aaron Andersenさん(nixpkgsのコミッター)の発表
今回の特別ゲストです!
発表内容としては、NixOSではないNixをシステムとして利用するLinuxディストリビューションfinixの話でした。
finixはNixOSとは異なり、systemdを利用せず軽量なfinitを利用しています。
そのため(?)、組み込み的な用途も狙っているそうです。
自分の知識不足からかあまり理解できなかったのですが、NixOSでないディストリの世界はとても興味深いものでした。
後半の懇親会の時に使用している端末を見せていただいたのですが、オープンソースなラップトップとして有名なframeworkのラップトップを使用されていて、ディスクトップ環境はniri + noctaliaでとても綺麗なデスクトップ環境でした。
また後で調べてみると、去年のNixCon @スイスでもfinixの話で発表をされたようです。
全体を通して
実際にオフラインでNixという共通の話題で話をするのはとても楽しいものでした。 Nixに限らず、色々な技術イベントに積極的に参加したいと思うようになりましたね。