プログラミング
NixOSはあなたが思うより複雑だが、OpenCodeがそれを解決した
NixOS is more complicated than you think but OpenCode fixed it (grigio.org)
要約
この記事では、LabWCとNoctalia Shell V5、そしてAI支援ツールであるopencodeを用いた、高度でミニマルなNixOSセットアップについて詳述しています。その結果、743MBのRAMと48のタスクで起動するデスクトップ環境が実現しました。このセットアップは、手動での設定が多く必要ですが、AIの助けを借りることで、複雑さを軽減し、軽量で再現性の高いシステムを構築できることを示しています。
全文翻訳
概要
LabWC(Waylandコンポジタ)とNoctalia Shell V5(Cachixから提供、公式NixOSリポジトリではない)を使用し、AI支援構成のためにDeepSeek V4 Flashモデルを搭載したopencodeの助けを借りた、高度でミニマルなNixOSセットアップの詳細な分析。
結果?
743MBのRAMで起動し、アクティブなタスクはわずか48個のデスクトップ。
主なハイライト
🔹 超軽量
起動時に743MBのRAM使用量
アクティブタスク48個 — GNOMEやKDEのようなフルDEからのブロートウェアなし
🔹 LabWC + Noctalia V5
LabWCはミニマルなWaylandセッションを提供します。多くのデスクトップサービス(dbus、polkit、clipmanなど)は手動で構成する必要があります。
Noctalia Shell V5はCachix経由でソースされています(まだnixpkgsにはありません)。
color schemesはnoctalia-labwc-syncを介してNocttaliaとLabWC間で同期されます。
🔹 AI支援構成
NixOS構成の作成とデバッグにopencode + DeepSeek V4 Flashを使用しました。
AGENTS.mdはシステムアップデートと自動化を推進します。
パスワードなしのsudoのためにSudoersを設定しました(opencodeの利便性)。
🔹 カスタムパッチ
Snapshot(Webカメラアプリ)は、リポジトリにあるにもかかわらず、ライブラリの修正を伴うカスタムビルドが必要だったため、NixOSで動作するようにパッチが適用されました。
LabWC/greetdがすべてを処理しないため、いくつかの環境変数が手動で設定されました(セッションタイプ、コンポーズキー、Telegram修正)。
🔹 Home-Managerなし
ユーザー構成は、異なるディストリビューション間でのポータビリティのために~/.config/に保持されています。
再ビルドフックは、dotfilesを/etc/nixos/にシンボリックリンクします(GNU Stowのように)。
🔹 ハイブリッドパッケージ管理
環境.systemPackagesを介したNixパッケージ。
opencode2のようなnpmでインストールされたアプリは、Nix管理のものと共存します。
いくつかのプログラム(例: OBS Studio)は、packagesリストではなくprograms.obs-studio.enableを介して有効化されました。
注目すべきサービスとツール
サービス/ツール
目的
greetd
ログインマネージャー(GDM/SDDMの代替)
vox-type (Vulkan)
音声認識、イタリア語プライマリ
podman + podman-compose
コンテナ管理
cockpit + cockpit-podman
Web管理UI
kshi
ディスプレイ解像度とマルチモニター
clipman
永続的なクリップボード
satty
スクリーンショット
scrcpy
USB経由のAndroid画面ミラーリング
smartmontools
SSDヘルス分析
LocalSend
LANファイル共有(ポート53317)
KDE Connect
デバイス統合
Traefik
リバースプロキシ(podmanコンテナ)
NixOS構成構造
/etc/nixos/
├── flake.nix → configuration.nix + Nocttalia V5をロードします。
├── configuration.nix → メイン構成(長い、モジュラー)
├── hardware-configuration.nix
└── *symlinks → ~/dotfiles/(再ビルドフックで管理)
教訓と落とし穴
LabWCはフルDEではありません — dbus、polkit、クリップボード、環境変数などを手動で配線する必要があります。
greetdはセッション環境変数を完全に管理しません — いくつかは構成にハードコーディングする必要があります。
Snapshotはリポジトリに存在してもNixOSではパッチが必要です。
Nixはアプリを誤認識することがあります — ファイル関連付けはトリッキーになることがあります。
4GB以上のRAMがnixos-rebuildに推奨されます — 低RAMマシンではスワップファイルが役立ちます。
AMDマイクロコード + Bluetoothは起動時に無効化されました(ただしインストール済み) — 細かい制御が可能です。
最終的な考え
「いくつかの構成は非常に複雑ですが、この道を探求する価値はあります。」
トレードオフは明確です:より多くの複雑さを最初に受け入れることで、リーンで再現性が高く、非常に軽量なシステムが得られます。opencodeとAIがそのギャップを埋めることで、実用的なものになります。