見出し画像

【リリース候補版】nixgen v1.0.0-rc.1&2 公開(NixOS設定ファイル生成ツール)

NixOS の設定をフォームで作る道具 nixgen の、最初のリリース候補版を公開しました。

インストールはこちらのコマンドから

コマンドから起動

nix run github:hatake716/nixgen/v1.0.0-rc.1

NEW!!(RC2) アプリケーションとしてインストール(詳細は後述)

nix profile install github:hatake716/nixgen

過去2回の開発記事(8月10日・8月11日)の続きですが、この記事だけで分かるように書きます。前回からの差分は後半にまとめました。


これまでの更新履歴はこちら


これは何をするもの?

NixOS では、システムの設定を1つのファイルに書きます。強力な仕組みですが、設定項目の名前を知らないと1行も書けません。項目は 24,557個あります。

nixgen はローカルで動く Web アプリで、この部分を引き受けます。

  1. 検索欄に ssh と打つ → 該当する設定が説明付きで出てくる

  2. クリックすると型に合ったウィジェット(スイッチ、数値欄、リスト)が出る

  3. 値を入れると、右側に .nix ファイルがリアルタイムで書き上がる

  4. configuration.nix・flake.nix・generated.nix の3点セットを書庫でダウンロード

要するに「オプション名を1つも知らないまま、インストール直後の NixOS を使えるマシンにする」ための道具です。

大物はプルダウン1回で済みます。デスクトップ環境9種(GNOME・KDE Plasma・Xfce・Cinnamon・COSMIC・LXQt・i3、そしてシェル付きで出てくる Sway + noctalia / niri + noctalia)、カーネル4種、シェル3種、GPU、言語7つ、地域18か所、Flatpak。定番アプリは12分野189個から選べます。


どんな人に、どんなふうに役立つか

NixOS を入れたばかりの人。 インストーラが作るのは最小構成です。ここからデスクトップ・日本語入力・ドライバを揃える部分が最初の壁で、nixgen はそこを「プルダウンを数回押す」に変えます。生成された3ファイルを /etc/nixos に置いて nixos-rebuild すれば、初回ログインから使えるデスクトップが立ち上がります。

日本語で NixOS を使いたい人。 これがおそらく一番刺さる層です。言語のプルダウンで日本語を選ぶと、ロケール・コンソールのキーマップ・X と Wayland 両方のキーボードレイアウト・fcitx5 + Mozc・セッションに合ったフロントエンドまで一度に入ります。Wayland のレイアウトが環境変数(XKB_DEFAULT_LAYOUT)で決まることは、どの入門記事にもまず書いてありません。実機で US 配列に化けるのを踏んで直した結果がプリセットに焼き込んであります。アプリ自体も全文が日英併記です。

設定名を覚えていられない人(つまり大半の人)。 たまにしか触らない設定ほど、名前を思い出す時間が長い。検索で届くなら覚える必要がありません。

昔の configuration.nix を持っている人。 読み込むと、マシン固有の情報(ホスト名・ユーザー・ブートローダー等)は Setup タブの入力欄に、それ以外は編集できるカードになります。今のリリースに存在しない設定は色付きで警告されるので、リリースをまたいだ棚卸しにも使えます。

Wayland コンポジタを試したい人。 Sway や niri は本体だけ入れても「黒い画面と素のバー」です。nixgen はログイン画面(sddm + Wayland モード)、シェル(noctalia)、その自動起動ユニット、アプリを起動できる PATH、端末、キーリング、XWayland までまとめて書きます。どれも実機で「動かない」を踏んで埋めたものです。


既存の方法と比べて

search.nixos.org(公式の検索サイト)と手書き。 名前を探すには良いサイトですが、見つけた後は自分で書きます。型に合わせた書き方(リスト内の負数には括弧が要る、予約語は引用符で囲む、など)は自分持ちです。nixgen は検索からファイルの書き出しまでを一続きにし、この種の落とし穴をレンダラ側で処理します。書き出しの正しさは、数千パターンを本物の Nix パーサに通す回帰テストで毎プッシュ検査しています。

nixos-conf-editor などの GUI エディタ。 先行する良いプロジェクトで、方向性も近いです。大きな違いは編集対象で、あちらは configuration.nix を直接編集します。nixgen は生成のみで、あなたのファイルには最後まで書き込みません。失敗しても imports の1行を消せば元のシステムに戻ります。インストールも不要で、nix run 一発で(clone も pip も npm も無しに)動きます。

AI チャットに書かせる。 正直に言えば有力な選択肢で、この nixgen 自体 AI と作られています。ただし用途が違います。チャットの弱点は、そのリリースに実在するオプションだけを出す保証がないこと。nixgen の一覧はお使いのチャンネルの実データから作った索引で、存在しないものはそもそも出てきません。生成物は Nix パーサでその場で検査でき、リリース前にはプリセットの出力を実際の NixOS システムとして評価して、ログイン画面が提示するセッション名や PAM の中身まで読み戻して確認しています。「もっともらしいが動かない」を仕組みで防ぐのが差です。

グラフィカルインストーラ(Calamares)。 インストール時に一度だけデスクトップを選べますが、その後の変更や日本語入力の配線は結局ファイル編集に戻ります。nixgen はインストール後にいつでも、何度でも使えます。


追記:アプリケーションとしてインストールできるようになりました。

コマンドを一度だけ

nix profile install github:hatake716/nixgen 

実行すると、アプリメニューの「システム」にこのアイコンで nixgen が並びます。

そこからは、マシンにある他のアプリケーションと同じ使い勝手です。起動すると専用のウィンドウが最大化した状態で開き、タブもアドレスバーも戻る・進むもありません — あるのはページと、通常のウィンドウ操作だけです。ウィンドウを閉じてもサーバーは動いたままで、もう一度アイコンをクリックすればエラーではなく画面が戻ってきます。


前回(8月11日)からの差分 — 45コミット

前回記事の時点で機能は出揃いつつありました。この45コミットは「選べる」を「使える」に変える作業と、リリースに耐える品質基盤づくりです。

1. デスクトップが「ログインしたら使える」ところまで

実機で Sway / niri / Hyprland にログインして、出た問題を全部潰しました。

  • noctalia が自動起動しない → graphical-session.target に紐づく user service を生成。3コンポジタで target への到達経路が全部違うことも確認(Hyprland は UWSM 経由のみ)

  • 起動したのにランチャーからアプリが立ち上がらない → NixOS の user service は PATH が coreutils だけ。PATH を明示するユニットに

  • Sway でバーが2本出る → /etc/sway/config をパッケージ同梱の設定から swaybar のブロックだけ抜いたものに差し替え。このとき pkgs.sway とモジュールが実際に入れる sway が別ビルドだと判明(片方は壁紙と include が消える)し、黒画面を1回出してから正しい側から導出するよう修正

  • 日本語設定なのに US 配列 → Wayland の配列は XKB_DEFAULT_LAYOUT。言語プリセットが書くように

  • パスワード保存ができない → gnome-keyring + PAM を追加。sddm 側のスイッチは実は no-op(生成される pam.d/sddm は include login の1行)で、login 側に付けるのが正解、というのも生成物を読んで確認

  • ログイン画面で選んだデスクトップが最初から選択されるように(defaultSession。セッション名は評価済みシステムから読み出し)

  • デスクトップを切り替えたら、前のグリーター・パッケージ・ユニットが掃除されるように

  • Hyprland は非表示に。 自動生成される設定が配列も端末も警告バナーも握っていて、フォームだけでは「動く」を約束できないため。Sway と niri は実機確認済みなので、プルダウン表記も Sway + noctalia / niri + noctalia に

2. NVIDIA が「生成そのまま」でビルドできるように

NVIDIA を選ぶと allowUnfree が一緒に入ります(無いとビルドが拒否される唯一の出力でした)。GPU を切り替えると前の GPU の設定は掃除され、allowUnfree は vscode 等の unfree パッケージが残っていない場合だけ外れます。

3. 取り込みの完成

  • configuration.nix を読むと、Setup の項目は入力欄へ、それ以外は編集できるカードへ(従来はテキストとして写すだけでした)

  • generated.nix を読み戻すと、プルダウンがファイルの内容に合わせて選択済みに(選択するだけで再適用はしません)

  • 壊れたファイルの修復: 属性の二重定義は読み込みで1つに畳み、入力メソッドの type = null は fcitx5 に修復

  • 生成ファイルのヘッダーに書いた nixgen の版が入るように(バグ報告の切り分けが1行で済みます)

4. UI の再設計

5つの手順(Setup → Options → Packages → Check → Download)を画面の部品そのものに刻みました。タブに 1・2・3 の番号チップ、Check syntax に 4、Download all three に 5。Setup タブの説明・警告・ボタンまで含めて全文日英併記になり、名前がコロコロ変わっていたダウンロードボタンは1つに整理。地域(タイムゾーン18か所)のプルダウンと、迷いを減らすための Architecture 欄の非表示化(x86_64 固定、別アーキのファイルを読むと再表示)もここで入りました。

5. 品質基盤 — リリース候補と言うための根拠

  • 実アプリをブラウザで操作する11項目の検査(tools/browser_check.py)が毎プッシュ CI で走ります

  • 生成した3ファイルを実際の NixOS システムとして評価し、主張を読み戻す tools/eval_check.py(セッション名・PAM のキーリング行・sway 設定の中身・レイアウト変数)。リリース前に実行し、往復後のモジュールも同一に評価されることまで確認

  • 専任のデバッグ担当によるレビューで、私のテストの盲点だったバグを1件発見・修正(プリセット入りのフォームに自分の generated.nix を読み戻すと、形の変わった同じ設定が二重定義になる)。引き継ぎ文書 DEBUGGING.md も公開リポジトリにあります

  • 全体点検2回はどちらも修正0件で通過


既知の制限

  • NixOS 専用です。検証は作者のマシンと仮想マシンで行っています(既定は x86_64)

  • Hyprland は当面非表示(理由は上記)

  • Check syntax は Nix のパーサであって、型までは判定できません。適用前の sudo nixos-rebuild dry-build は省略しないでください

試すには・報告するには

nix run github:hatake716/nixgen/v1.0.0-rc.1

初回は索引の構築に5分ほどかかります。2回目からは1秒です。

不具合を見つけたら、生成されたファイルの2行目にある nixgen: の行を添えて Issue へお願いします。どのビルドが書いたファイルかが分かると、原因の特定が一気に速くなります。

# channel: nixos-26.05   generated: 2026-08-12 10:00   nixgen: 2026-08-12o

数日この RC を自分で使い込み、問題がなければ v1.0.0 として安定版にします。

関連記事はこちら

いいなと思ったら応援しよう!

はたけっち|テック&ガジェット雑学 よろしければ応援お願いします! いただいたチップはクリエイターとしての活動費に使わせていただきます!