概要
- Nixユーザー が初めて Guix を試した体験記
- GuixとNixのアーキテクチャ的違い や使い勝手の印象
- non-freeファームウェア 問題と「nonguix」活用の現実
- ドキュメントやパフォーマンス、initシステム の比較
- Guixの Lisp環境 や一貫性への評価と今後の課題
Guixを試してみた:Nixerの印象
- 長年 Nix を利用し、大規模プロジェクトやNix言語インタプリタの開発経験を持つ筆者の視点
- Emacsユーザー でLispに親しみあり。Schemeはやや経験が浅いものの好意的
- 今回初めて Guix を実際に使用し、UncharteviceノートPC(Zhaoxin x86_64互換CPU)でniriデスクトップ構築を目指す試み
- 目的:NixとGuixの違いを体感し、興味深い点を記録
- 結果:完全な環境構築は未達。多くの発見あり、今後も挑戦予定
GuixとNixの共通点・相違点
- GuixとNix は低レベルのパッケージ管理基盤(Nix Guix Store、derivation等)を共有
- ただし、 GuixはNixのSchemeラッパーではなく独立したエコシステム として進化
- 「NixをLisp構文で書くもの」と考えるのは誤り。両者の設計思想や実装が大きく異なる
non-freeファームウェア問題とnonguix
- GuixはGNUプロジェクト であり、ソフトウェアの自由を重視。プロプライエタリなファームウェアを推奨せず、同梱もしない
- 多くの現代ハードウェアで動作させるには「 nonguix」を利用し、非自由なバイナリを追加する必要
- 筆者も Wi-Fi利用のためnonguix導入。技術的な影響も即座に発生
アーキテクチャ上の違い
- Nixの構造
- [nix-daemon] <-> [Nix CLI] <- [Nix code]
- nixpkgs の複数コミット混在や柔軟な構成が可能
- CLIとパッケージセットが独立し、バージョン切替も容易
- Guixの構造
- [guix-daemon] <-> [guix CLI + profile] <- [Guix user code]
- パッケージ/サービスはSchemeモジュールの階層構造 で管理
- guix pull でCLI自体を再構築し、バージョン切替は必ず2段階(guix再構築→設定再構築)
- バージョン切替や初期セットアップが遅く、キャッシュ破壊が起きやすい
- Emacsパッケージ管理の違い
- Guixでは グローバルなprofileインストール が主流
- Nixの emacs.withPackages のような隔離的環境構築が見当たらず、実験的なパッケージ導入が難しい印象
ドキュメントとオンボーディング
- Guixコミュニティ は明確な思想と集中した文化を持つ
- ドキュメントはNixより遥かに優秀。構造化され、Schemeコードとしても詳細に記述
- ただし、 Schemeの習得が前提 となるため、初心者向けとは言い難い
- nonguix問題 によるインストール手順の情報不足も障壁
- 結論: ドキュメントは自信のあるユーザーには有効だが、初心者の障壁は依然高い
パフォーマンス
- GuixはNixより遅い。特に低スペックCPU(例:Zhaoxin KX-6640MA)では顕著
- guix pull だけで30~50分要し、その後の設定評価やビルドも時間がかかる
- Nixでは同等の作業が5~10分で済む
- 安定運用状態になると改善するとの話もあるが、到達までが大変
- ビルドサーバー(TVLのnevsky)でGuixをビルド→ノートPCへ転送 を試みるも、guix copyのHTTP転送が機能せず断念
- GuileインタプリタのJITや評価モデルの違い によるものか、パフォーマンス向上の余地あり
Shepherd(initシステム) vs. systemd
- Guixはsystemdを採用せず、Shepherd(Scheme製init)を利用
- 筆者はsystemdに否定的で、Shepherdの採用を歓迎
- Shepherdは シンプルかつドキュメントが充実。今後さらに検証予定
まとめと今後
- 現状: GuixはノートPC上で動作するが、GUI未導入・ハードウェア設定も未完
- nixos-generate-config相当の自動設定ツールがなく、手動で設定推測が必要
- チャネル管理の失敗で再度guix pullが必要 となり、さらなる時間消費
- Lisp環境やエコシステムの一貫性は魅力
- GuixがNixにないものを提供できるかは未定。まずは NixOS相当のデスクトップ環境構築と反復作業の効率化 が目標
- 今後も継続的に挑戦予定