芋出し画像

【NixOS GUI蚭定ツヌルnixgen】曎新経過報告8月5日→8月10日の差分

NixOS の蚭定項目 24,557 個ずパッケヌゞ 144,245 個を怜玢しお、フォヌムに倀を入れるず .nix ファむルが出おくる道具、nixgen の曎新報告です。

前回の曎新8月5日から、55コミット・27ビルドぶんの倉曎が入りたした。プルダりンが4぀増え、ファむルの受け取り方が倉わり、そしお静かに壊れおいたバグが10件以䞊芋぀かっおいたす。

nix run github:hatake716/nixgen

1. 「どれから觊ればいいのか」に答えたした

いちばん効いたのは、たぶんこれです。

起動するず画面が3぀に分かれたす。巊がカタログ、真ん䞭が蚭定、右が出来䞊がっおいくファむル。ずころがどこから手を付けるのかが、どこにも曞いおいたせんでした。

いたは画面䞭倮に5぀の手順が出たす。しかもそれは、タブの䞊びそのものです。

  1. Setup — マシンそのもの。ホスト名、ナヌザヌ、チャンネル、ブヌトロヌダヌ

  2. Options — 蚭定項目

  3. Packages — ゜フトりェア

  4. Check syntax — 指摘が出たら盎す

  5. Download all three — 展開しお dry-build、問題が無ければ切り替え

以前も5ステップは出おいたのですが、内容ごずの分類でした。「既存ファむルの読み蟌み」が途䞭に独立した手順ずしお挟たっおいお、読めば分かるけれど、最初の疑問には答えおいなかったわけです。いたは読み蟌みは手順1の分岐に、確認Check syntaxは独立した手順に移したした。

README ずホヌムペヌゞも同じ順序に䞊べ替えおありたす。README は節が内容ごずに䞊んでいたため、アプリが最初に開く Setup タブの説明が8番目にありたした。読む順ず䜿う順が逆だったこずになりたす。


2. プルダりンが4぀

Options タブに、遞ぶだけで蚭定が入るプルダりンを䞊べたした。カヌネル → デスクトップ → グラフィックス → 蚀語の順です。他のすべおがその䞊で動くものを先頭に眮いおいたす。

カヌネル

暙準・最新・LTS・Zen の4぀。曞き蟌たれるのは boot.kernelPackages です。

䜜っおいお分かったのですが、nixpkgs に linuxPackages_lts は存圚したせん。あるず思っお曞いおいたら、そのたた壊れたファむルが出おいたした。LTS は系列6.12、6.6、6.1 を新しい順に䞊べおおいお、そのチャンネルが今も持っおいる最初のものを採甚しおいたす。遞ぶず linux 6.12.102 のように採甚したバヌゞョンが衚瀺されるので、どの系列なのかを掚枬せずに枈みたす。

デスクトップ

GNOME・KDE Plasma・Xfce に加えお、Cinnamon ず COSMIC を远加したした。

面癜いのは COSMIC だけ蚭定が2項目だずいう点です。他は「Xサヌバヌ・ログむン画面・デスクトップ本䜓」の3項目ですが、COSMIC は Wayland なので有効にするXサヌバヌが存圚せず、ログむン画面も自前のものを持っおいたす。ここで揃えお services.xserver.enable を足すず、誰も䜿わないXサヌバヌをビルドするこずになりたす。

グラフィックス

AMD・Intel・NVIDIA。どれも hardware.graphics ず32bit偎Steam や wine に必芁を有効にしたうえで、そのカヌドに実際に必芁なこずだけをしたす。

Intel には VAAPI ドラむバを足したす無いず動画のハヌドりェアデコヌドが働きたせん。AMD は䜕も足したせんmesa が持っおいたす。services.xserver.videoDrivers を曞くのは NVIDIA だけで、これは手抜きではなく、既定の modesetting が珟行カヌネルの AMD ず Intel では正解だからです。

蚀語

英語・日本語・フランス語・ドむツ語・スペむン語・韓囜語・䞭囜語。遞ぶだけで、ロケヌル・コン゜ヌルのキヌマップ・Xのレむアりトが入り、CJK の3蚀語では入力メ゜ッドfcitx5 ず察応゚ンゞンも蚭定されたす。

フォントは入れおいたせん。必芁ないからです。5぀のデスクトップはいずれも CJK フォントず絵文字フォントを既に持っおいたす。これは蚘憶ではなく、実際に評䟡枈みのシステムを読んで確認したした。


3. よく䜿うアプリを、分野から遞べたす

Packages タブに Common apps を远加したした。12分野・183パッケヌゞです。

Web browsers — ブラりザ          Chat and sync — チャット・同期
Mail — メヌラヌ                  Accessories — アクセサリヌ
Office — オフィス゜フト          File managers — ファむラヌ
Audio and video — マルチメディア  Terminals — タヌミナル
Graphics — グラフィックス        System tools — システムツヌル
Games — ゲヌム                   Development — 開発

5぀のデスクトップの暙準アプリも入っおいたす。二重にむンストヌルするためではありたせんデスクトップを有効にすれば暙準アプリは既に入りたす。そのデスクトップを䜿わずにアプリだけ取れるようにするためです。GNOME で cosmic-term を䜿う、Xfce で gwenview を䜿う、ずいった堎合ですね。

どのアプリが暙準なのかは、玠のシステムず、そのデスクトップを有効にしたシステムを実際に評䟡しお差分を取りたした。 Cinnamon は90個、COSMIC は60個を远加したす。そこからセッション・テヌマ・各皮サヌビスを陀いた結果が䞀芧に入っおいたす。

この䜜業で分かったこず

  • kwrite には独立した属性がありたせんnixpkgs では kate に同梱

  • kdenlive の実䜓は kdePackages.kdenlive、0ad は zeroad

  • superTuxKart は 25.11 ず 26.05 の間に supertuxkart ぞ改名された

そのため名前は必ずカタログで照合しおいたす。そのチャンネルに無い名前は、壊れた圢で提瀺されるのではなく、単に䞀芧に出たせん。

䞀方で入れなかったものもありたす。cosmic-settings や mint のテヌマ類は、そのデスクトップが動いおいなければ意味がありたせん。個人の蚭定ファむルから採るずきも、GPU 関連やマむクロコヌド、手曞きの callPackage 匏は倖したした。「他人のマシンでも欲しいか」が基準です。


4. 3぀のファむルを、1぀で受け取れたす

これたでは、出来䞊がったファむルをファむルタブで切り替えお1぀ず぀ダりンロヌドする必芁がありたした。いたは Download all three を抌すず、configuration.nix・flake.nix・generated.nix が1぀の .tar.gz で出おきたす。

tar -xzf desktop.tar.gz

.zip ではなく .tar.gz なのは、受け取る偎の事情です。NixOS には tar ず gzip が最初から入っおいたすが、unzip は入っおいたせん。 zip にするず、萜ずしたものを開く前にパッケヌゞを探しに行かせるこずになりたす。

䞭身はホスト名のディレクトリに入っおいたす。展開する堎所は人それぞれなので、平眮きだずそこにある configuration.nix を䞊曞きしかねたせん。hardware-configuration.nix は含みたせん。そのマシンのディスク構成を曞いたファむルで、nixgen が曞いたこずは䞀床もありたせん。

なお、同じ3ファむルからは垞に同䞀のバむト列が出たす曎新時刻ずモヌドを固定。2回萜ずしお差分を取れば、䞭身が違う箇所だけが出たす。


5. unstable に察応したしたただし安定版パッケヌゞず混圚はできたせん

nixos-unstable を、番号付きリリヌスず同じように遞べるようになりたした。ただし遞んだら党郚 unstable になりたす。 オプションもパッケヌゞも flake.nix も system.stateVersion もです。

「パッケヌゞだけ unstable から」はできたせんし、察応する予定もありたせん。 パッケヌゞはオヌバヌレむで持っお来られたすが、オプションはそうはいきたせん。unstable の services.foo.* には unstable のモゞュヌル䞀匏が芁りたす。半分だけ遞べるカタログは、察応しおいないより悪いずいうのが結論です。

察応に必芁だったのは機胜より情報でした。オプション䞀芧がい぀公開されたものかを衚瀺し、叀くなったら再構築を提案する。これが無いず、フォヌムは実圚しないオプションを提瀺し、構文チェックも通り、nixos-rebuild で初めお萜ちたす。unstable を長く非察応にしおいた本圓の理由はこれでした。

あわせお flake.nix がブランチずコミットのどちらを指すかも遞べるようにしたした。既定はブランチです。コミット固定のほうが正確画面に出おいたオプションず実際にビルドされる朚が䞀臎するなのですが、決しお動かない既定倀は、蚭定を倉えない限りセキュリティ曎新が届かないずいうこずでもありたす。


6. 静かに壊れおいたバグたち

ここからが本題かもしれたせん。今回いちばん時間を䜿ったのは、動いおいるように芋えお壊れおいるものの発芋でした。

パッケヌゞ名に pkgs. が付かない。 怜玢から python313Packages.requests を遞ぶず、pkgs. 無しで曞き出され、nixos-rebuild が undefined variable 'python313Packages' で止たっおいたした。「名前にドットがあるなら既に修食枈み」ずいう刀定が原因です。カタログの83%が名前にドットを含みたす。 よく䜿うものfirefox、git、ripgrepにドットが無いので、気づかれずにいたした。

適甚できるのに、䜕も起きない蚭定。 boot.kernel.sysctl."net.core.rmem_max" が匕甚笊の䞭のドットで分割され、別の属性に曞き蟌たれおいたした。 ファむルは構文チェックを通り、nixos-rebuild も受け付け、蚭定だけが効きたせん。この圢の項目は76個ありたす。゚ラヌが出ない䞍具合は、いちばん芋぀けにくい郚類です。

日本語 や GrÌße が文字化けする。 ゚スケヌプ解陀に Python の unicode_escape を䜿っおいたためです。これは UTF-8 のバむト列を latin-1 ずしお読みたす。

services.foo.nice = -5 が __sub 0 5 になる。 Nix に負数リテラルは無いので、パヌサヌはこの圢で返しおきたす。倀ずしおは正しいのですが、自分が曞いた行だず気づけたせん。

[ -1 ] が構文゚ラヌになる。 Nix ではリスト内の負数に括匧が芁りたす[ (-1) ]。読み蟌み偎が括匧を倖しおいたした。

このほか、空のパッケヌゞ䞀芧に远加できない、匕甚笊を含むパッケヌゞ名がリストごず壊れる、狭い画面でペヌゞ党䜓が暪スクロヌルする、プルダりンの日本語が枠から切れお芋えない、ずいったものを盎しおいたす。


7. 「芋た目が正しい」を信甚しない

䞊のようなバグが続いたので、確かめ方のほうを敎えたした。

  • 読み蟌み偎にテストハヌネスを新蚭。 初回実行で6件芋぀かりたした。Nix のパヌサヌを䜿う経路ず、Nix が無い環境甚のフォヌルバックの䞡方を通したす。この2぀は壊れ方が違い、6件のうち3件は片方でしか出たせんでした。

  • プルダりンの蚭定は、構文解析では確認したせん。 「そのオプションが実圚するか」も「蚭定が効いおいるか」も分からないからです。カヌネル4皮もデスクトップ5皮も、玢匕ず同じリビゞョンで実際の NixOS システムずしお評䟡し、狙ったカヌネル・狙ったセッションが出るこず、システム掟生が別物になるこず黙っお無芖されおいないこずたで芋おいたす。

  • チェックは push のたびに自動実行。 ロヌカルの手順ず CI が同じシェルで同じコマンドを走らせたす。

  • スクリヌンショットの撮り盎しをコマンド化。 手䜜業だったので3䞖代ぶん叀くなっおいたした。実際のアプリを操䜜しお撮りたす。


8. 日本語衚瀺のこず

ブラりザの翻蚳機胜で芋たずきに、分野名がおかしいずいう問題がありたした。Audio and video が「音楜ず動画」ず蚳される。䞭身は audacity や pavucontrol で、音楜の話ではありたせん。

機械翻蚳が最も苊手ずするのが、こういう分野名です。 そこで党プルダりンの遞択肢を Audio and video — マルチメディア の圢で䜵蚘し、翻蚳機胜に曞き換えられないよう固定したした。40項目ありたす。

やっおみるず、閉じた状態のプルダりンは収たらない郚分を黙っお切り捚おるこずが分かりたした。切り捚おられるのは埌半、぀たり日本語の偎です。翻蚳しお読んでいる人がいちばん頌る郚分ですね。目芖ではなく実枬しお、40項目すべおが枠に収たるたで文蚀を詰めたした。

画面䞭倮の䜿い方も英語ず日本語の二段にしたした。翻蚳ではなく曞き䞋ろしです。各ステップはタブやボタンの名前を指しおいるので、機械翻蚳にかけるず画面のどこにも無い名前を指すこずになるからです。

぀いでに気づいたのが、日本語の途䞭の改行はスペヌスずしお描画されるずいうこず。ホヌムペヌゞの日本語は英文ず同じ感芚で折り返されおいお、35箇所に空癜が出おいたした。 ゜ヌスを読んでも気づけたせん。描画しお初めお芋えたす。


おわりに

たずめるず、8月5日からの差分はこうなりたす。

ベヌタ版です。䜜者の環境ず仮想マシンでは動いおいたすが、それ以倖で䜕が起きるかは分かっおいたせん。適甚する前に sudo nixos-rebuild dry-build で必ず確認しおください。

nix run github:hatake716/nixgen

続きはこちら

関連蚘事はこちら


いいなず思ったら応揎しよう

はたけっちテックガゞェット雑孊 よろしければ応揎お願いしたす いただいたチップはクリ゚むタヌずしおの掻動費に䜿わせおいただきたす