世界を動かす技術を、日本語で。

NixOSを愛する理由

概要

  • NixOS の魅力はLinux自体よりも Nixパッケージマネージャ にある点
  • システム全体を 宣言的・再現可能 に構築・管理できる特長
  • 環境の 実験や変更が安全かつ可逆的 である利点
  • 異なるOS間でも一貫したツール管理 が可能
  • LLM時代の 柔軟な開発・デプロイ環境 としての有用性

NixOSの魅力はNixパッケージマネージャにあり

  • NixOS は単なるLinuxディストリビューションではなく、 決定論的かつ再現可能な関数型パッケージ管理 の思想の産物
  • Nix DSL でシステム全体を定義し、構成を一元管理可能
  • システムの ロールバック段階的な変更 が容易
  • 他のOSが徐々に「状態の山」と化すのに対し、NixOSは 宣言的な構成管理 が可能
  • 新しいPCを購入しても、 単一のソースからシステムを再構築 できる安心感

宣言的な設定と一元管理の利点

  • パッケージや設定、キーマッピングなどを 一箇所で宣言的に管理
  • 例:GNOME拡張機能やキーボード設定をNix DSLで記述
    • GNOME拡張機能の導入・設定
    • キーボードごとのキー割り当て変更
  • 手作業のセットアップやスクリプトの断片化 を回避

安定性とアップグレードの容易さ

  • 長期的な安定性半年ごとの予測可能なリリースサイクル
  • 自動アップデート安全なアップグレード が可能
  • unstableチャンネル で新しいソフトウェアの試用も容易

実験のしやすさと安全性

  • パッケージの試用やisolated shell(nix shell/nix develop) による安全な実験環境
  • 依存関係やビルド手順も宣言的に管理 でき、システム汚染を防止
  • 異なるOS(macOS、Linux、FreeBSD) でもNixパッケージマネージャを利用可能
  • 開発ツールや依存管理の一貫性を保つことができる

LLM時代の開発環境との親和性

  • ツールやランタイムのバージョン管理 が簡単
  • コーディングエージェントが必要なツールを nix shell/develop で即時導入・隔離実行可能
  • 例:Rust開発環境をNixで即時用意し、 ベースシステムを一切汚さず にビルド完了
  • flake.nix で依存関係を固定し、 再現性のあるアーティファクト としてコミット可能

デプロイとCI/CDにおけるNixの利点

  • Dockerよりも決定論的なデプロイ が可能
  • dockerTools.buildLayeredImage で小型かつ再現性の高いDockerイメージを構築
  • CIパイプラインやデプロイアーティファクト も同じ思想で管理
  • 一貫したソフトウェア管理モデル で、ツールや習慣の断片化を防止

NixOSが体現する理想のシステム像

  • 宣言的・再現可能・可逆的・安定的 なシステム運用
  • 実験の安全性アップグレードの容易さ
  • LLM時代の高速なツール変化 にも柔軟に対応
  • 「NixOSが好き」というより「Nixの思想が好き」 という本質
  • 日常的な開発・運用における理想的な表現 としてのNixOS

Hackerたちの意見

Nixをシステム全体で使ったことはないけど、記事に書いてある理由でhttps://devenv.sh/を使うのは楽しいよ。ローカルコンテナより開発がずっと楽だしね。

どうしてdevenvが必要なのか、シェルと何が得られるのかを教えてもらえる?{ pkgs }: pkgs.mkShell { nativeBuildInputs = with pkgs; [ # ビルドツール cmake ninja gnumake pkg-config ]; buildInputs = with pkgs; [ # java jdk8 # コンパイラ gcc clang llvmPackages.libcxx # ライブラリ capstone icu openssl_3 libusb1 libftdi zlib # スクリプト (python3.withPackages (ps: with ps; [ requests pyelftools ])) ]; # capstoneのヘッダーはinclude/capstone/にあるけどblutterはinclude/を期待してる shellHook = '' export CPATH="${pkgs.capstone}/include/capstone:$CPATH" export CPLUS_INCLUDE_PATH="${pkgs.capstone}/include/capstone:$CPLUS_INCLUDE_PATH" ''; }

うーん。home-managerとはどう違うの?

version pinningがdevenv.shやNix全般でどう機能するのか、正直よくわからないんだよね。自分のリポジトリに.tool-versionsファイルを置けば、そこで作業してるみんながasdfを使って同じバージョンのツールをインストールできる。これは低テクで完璧じゃないけど(Nixの全機能の代わりにはならないけど)、それなりに機能するんだ。devenv.shのページの例は、ツールやパッケージを特定のバージョンに固定することを示してないみたい。Nixの熱心なファンたちは、これがXY問題だと思ってて、個々のツールやパッケージを任意のバージョンに固定する必要はないって言うけど、俺はそういうことをしたい、哲学的には間違ってるかもしれないけどね。

Nixの経験はないんだけど、パッケージマネージャーの外で自分でアップデートプロセスを持つソフトウェアはどう扱うの?具体的にはDiscordやSlack、Docker Desktop、Jetbrains Toolboxとか。こういうソフトは使わないのがNixの流儀なの?

いや、そういう人気ソフトの最新バージョンをnixpkgsに熱心に提出するオタクがいるよ。あとはflatpakを使うことを勧めてくるかも。

いい質問だね。今のところ、ちょっとNixの魅力にハマってる。NixOSのLinuxマシンを持ってて、Macにはnix-darwinを入れてる。NixでBrewをインストールして、BrewでChromeみたいなアプリのカスクを管理してるんだけど、これって自動でアップデートされるよね。だから、「flake.lock」は君が言ったアプリにはあんまり正確じゃないかも。

他のディストロとあんまり変わらないよ。自動アップデートの仕組みって、root権限やシステムパッケージマネージャーが使えないから、$HOMEに新しいバージョンをインストールするしかないんだ。アップデートがインストールされたら、システムパッケージはそれにトランポリンみたいになる。Discordを試したけど、最初の起動時にいくつかのアップデートをダウンロードするみたいだけど、バージョンはシステムのやつ(0.0.127、最新は0.0.129)に固定されてる。だから、多分アップデートしないか、しようとして失敗してるんだと思う。

Discordとか、こういうソフトウェアは実は2層のアップデートがあるんだよね。ウェブページのアップデート(基本的にはホームディレクトリにJSを書き込むこと)にはNixOSは何も防げないし、ホストプログラム(つまりElectron)のアップデートはNixOSが無効にしてる。Jetbrains ToolboxはRustupみたいなツールとはちょっと違うカテゴリーで、自分自身のパッケージマネージャーだから。ToolboxでIDEを管理してるなら、そのIDEのバージョンは「Nixの外」にあって、Nixに管理されてないんだ。自分のFHS環境にパッケージされてるだけで、Nix上にあることは全く知らないってわけ。とはいえ、Toolbox自体のアップデートはパッケージマネージャーを通じて行う必要があるよ。最後に、なんでLinuxでDocker Desktopを使うの? WindowsやMacでは理解できるけど、Dockerは本質的にLinuxに結びついてるから、Windows/MacのアプリはVMを動かしてポートマッピングやファイルシステムのマウントをしてることを抽象化してるんだよね。でもLinuxでは、俺はいつも直接ホストにDockerをインストールしてるだけなんだ。

個人のデスクトップ環境では、最新のnixifiedオプションがないときは普通にインストールしてる。いくつかのものについては、GitHubでスケジュールされたGitHubアクションを使ってアプリのアップデートをチェックするnixモジュールを作ったりして、新しいハッシュを生成してリリースにタグ付けしてる。Claude CodeやCursorのためにそれをやったことがあって、これで自分のnix設定から彼らの設定ファイルを管理できる機会にもなった。

NixOSの一番好きなところは、毎回CIで再ビルドしなくてもいい、決定論的にキャッシュされたパッケージが持てるところだね。Nixで開発環境を設定するのも簡単だし。

CIにおけるNixはすごく良い組み合わせだと思う。ATprotoのことはあまり気にしてないけど、TangledはNixを使ってCIシステムを構築してて、それがすごく魅力的だなって感じる。GitHub ActionsのCIキャッシングは本当にひどいから、Forgejoがその方向に行ったのはちょっと残念だった。

NixOSがもうちょっとまともなドキュメントがあれば、もっと好きになるんだけどな。情報がいろんなフォーラムや古いブログの投稿、そして「これ、俺のマシンでは動く(3リリース前)」っていう千の問題に散らばってる感じ。

ChatGPTは、ちゃんと動くコードをまとめるのが得意だよね。最初の試みではうまくいかないけど、3回目にはだいたい成功する。

俺たちの多くはNixOSやnixを使ってるけど、ドキュメントを読んだこともなければ、自分でnixを書いたこともないんだ。それはClaude Codeの仕事だね。

NixOSのウィキが2つあるのも困るよね。nixos.wikiとwiki.nixos.org。wiki.nixos.orgはnixos.wikiが古くて非公式だって主張してる。でも両方とも更新されてるみたいで、どっちがSEOで勝つかはNixOSの質問をググるたびに運任せだよ。

そうだね、昔は同意してたけど、気づいたのは、俺はソフトウェアエンジニアで、大規模なプロジェクトでソースコードを唯一のドキュメントとして使うことに慣れてるってこと。NixOSの素晴らしいところは、nixpkgsをクローンして、他のドキュメントが不十分なソフトウェアと同じように扱えるところなんだ。

俺は約1年前にNixに切り替えたんだ。30年間Windowsを使ってたけど、Linuxも何回か試したことがあったけど、結局続かなかった。今はもうWindowsには絶対に戻らないって確信してる。NixOSのおかげで、やっと自分に合ったシステムを見つけたよ。しかも、OSの設定がリポジトリにあるなんて最高だ。マジで、これが大好き。たまに、Pythonのちょっとしたスクリプトを書くときは、uvよりnix-shellの方が好きなこともある。ほかのシステムがどれだけ野蛮に感じるか、言葉では表現しきれないよ。Nixがなかったら、Gitなしでコードを書くようなもんだ — 絶対に無理。しかも、そんなに手間じゃないんだ。一度やればいいだけ。次に新しいシステムをセットアップするとき、Nixなしだと全設定をまた最初からやらなきゃいけないんだから。

NixOSで自分のNixOS設定から安く派生した隔離されたコンテナを実行するための良いプロジェクトを聞いたことある?それが欲しいんだ。基本的に、すべての非標準アプリを自分の小さな世界にインストールできるコンピュータが欲しい。「あれ、面白いな。このシステムには俺だけがインストールされてるみたいだ」と思わせるような。要するに、インターネットから完全に未確認のコードをローカルマシンで実行できて、最悪でも自分のコンテナを壊すだけだって分かるのが理想なんだ。NixOSは、その未来に向かう一つの道だと思う。

NixOSに切り替えた後、他の方法(aptやbrew + 手書きのbashスクリプト20個とか)でシステムを管理するのは、原始的な技術だって自信を持って言えるよ。Nixはあらゆる面で優れてるし、AIの時代にもぴったりだし、コパイロットはその辺りが本当に得意だね。

そうだね、俺はもう20年近くUnix系のものを使ってる(ほとんどがLinuxで、4年ほどmacOSにハマってたこともある)。最初にArchやUbuntu、Mint、OpenSUSEを使ったときはそれなりに好きだったけど、NixOSを実際に試したら、明らかに正しいと感じて、これがデフォルトじゃないことが気になり始めた。nix-shellで一時的にものをインストールできるのはゲームチェンジャーだし、configuration.nixを見れば自分のコンピュータに何がインストールされているかをすぐに確認できるのがすごくいい。「アンインストール」するのは「configuration.nixから削除して再ビルドする」だけ。ビルドごとに自動的にスナップショットが作成されるから、Archで設定をいじるよりもずっと「大胆」になれる。ビデオカードやWi-Fiドライバーをいじるのが怖かったんだ。何かを壊してしまったら、元に戻す方法が分からなくて、再インストールしなきゃいけなくなるかもしれないから。そんなことはあまりなかったけど、ブートパラメータやカーネルモジュールをいじるのがちょっと怖かった。NixOSの自動スナップショットのおかげで、下位レベルのものをいじるのがずっと簡単(そして楽しい)になった。もし何かを壊してしまっても、最悪のシナリオは再起動して古い世代を選ぶだけだから。これって思ったより大きなことなんだ。例えば、今のノートパソコンでは、USBデバイスが30秒以上使われないと「ウェイクアップ」しなきゃいけないという変な癖があって、最初の3、4語が入力されないことがあった。調べた結果、解決策はカーネルパラメータに「usbcore.autosuspend=-1」を追加することだと分かった。それをやったらうまくいった。もしArchやUbuntuを使ってたら、たぶんそのまま我慢してたと思う。カーネルパラメータを編集するのが怖くて、壊すリスクがあったから。NixOSが大好きだ。離れたいとは思わないし、少なくともこのモデルを放棄したいとは思わない。GNU Guix Systemに切り替えようかとも考えたけど、Nix言語よりLispの方が好きだから、FSF公認のディストリビューションは実際にコンピュータを使う人には本当に面倒なんだ。

Nixはすべての面で優れてる。デスクトップでNixOSを使った経験から言うと、95%は素晴らしくて、5%は非常に辛い。NixOSでつまずくことがあったら、何をしようとしているのかをもっと広く深く理解する必要があるかもね。一般的なLinux OSは形を整えるのが簡単だけど、NixOSは最初からすべての複雑さを支払うことになるんだ。

著者はNixのもう一つの好きなトピックに触れそうになるけど、結局それを逃してるね。NixOSはAIツールを使って設定できる能力が本当に素晴らしいんだ。他のOSより優れてるって言ってるんじゃなくて、唯一無二の存在だってこと。俺は何年もNix、パッケージマネージャーとOSの両方を使ってきた。著者の言ってることには全て同意するよ。本当に期待に応えてくれるし、宣言的な性質は素晴らしい。作業中に「俺のものが勝手に壊れない」っていう感覚が常にあるんだ。宣言的で、ロールバック可能で、ファイルベースの基盤があるから、コーディングエージェントに自由にやらせるのに完璧なOSなんだ。ClaudeにUbuntuでPulseaudioからPipewireにオーディオスタックを切り替えてもらうのを信頼するか?CodexにFedoraでHyprlandをインストールしてもらうのを信頼するか?いや、他のOSではどんなエージェントにもそれを任せることはできない。でも、NixOSならGrokにだってそれを任せられる。なぜなら、1) 変更を行う前に監査できるし、2) ロールバックやロールフォワード、好きなように戻れるから。何年も積み重ねた信頼があるから、これが本当に機能するって分かってる。これがNixへの狂ったラブレターになってるのは認めるけど、実際、これほどの自信を持って操作できるOSは他にない。ほとんどの人はそんなこと気にしないだろうけど、OSを調整したりウィンドウマネージャを切り替えたりするのが好きな俺にとっては、もう可変ディストリビューションには戻れない。このセキュリティが今や俺の基準になってるし、他はそれに応じる気がない。だから、「2026年のLinuxデスクトップの年」を目指してる開発者たちには、AIアシスタントを使ってるならNixOSを試してみてほしい。まずは空のGitリポジトリでこれを試してみて。「Hey Claude, NixOSを試してみたい。Gnomeを使ったFlakeベースのスターター設定を作って、仮想マシンでデモできるようにして。もしnixがまだインストールされてなければ、determinate-systemsインストーラーでインストールして。イメージをビルドするための「vm」ターゲットをflakeに含めて、プラットフォームで利用可能な仮想化を使ってVMをビルドして起動する小さなbashスクリプトも含めて。」

NixOSユーザーとして3年、Claudeユーザーとして1年以上の俺としては、君の言う通り理想的なフィットだと思う。例えば、Claudeがdconf設定を通じてGNOMEを設定できるのが本当に嬉しい。宣言的にその設定を調整するには、異なる領域の知識やどこを掘り下げるかを知っておく必要がある。でもClaudeはそれを知ってる。でも、常に動いているAIのための環境を設定しようとして、高レベルの抽象化(樹状のflake-partsなど)に従って自分の設定をリファクタリングさせようとすると、全く無知で、成功せずに即興でやってしまう。Nixが人間にとって難しいことは、AIにとっても難しいんだ。型のないラムダが暗黙のファイル外コンテキストで解決されるから、NixOSモジュール、home-managerモジュール、nix-darwinモジュール、flake-partsモジュールなど、どれを見ているのかを知っておく必要がある。それらのモジュールは、親スコープで何がインポートされているかについての仮定をすることがある。だから、プロジェクトのためにかなり広範なコンテキストを提供する必要があると思う。どう構造を持たせたいかを詳しく説明する必要がある。エコシステムはかなり断片化されていて、人々は良いパターンについて完全には合意していないから、AIは良いパターンが何かを知ることができないんだ。はっきりさせておくけど、広範なコンテキストを提供するのは絶対に価値があると思うし、より良いNixベースのプロジェクトテンプレートやNixベースのデプロイメントテンプレートを作るのが本当に楽しいし成功してる。Nixユーザーによって作られた安定した、よく作られたプロジェクトの量は驚くべきものだよ。

確かにその通りだね。自分のflake設定がもっと良くできるって分かってたけど、面倒でやらなかった。今年の初めにClaudeに頼んだら、すべてが改善されたし、ずっと気になってた小さなバグも直った。これをやる自信は、まさに君が言ったことから来てるんだ。もし全てが壊れたら、ただロールバックすればいいから。

時々、Nixのことを考えるときにLLMを使うのもいいけど、Nix言語に慣れてないと、結構やらかしちゃうことがあるんだよね。とはいえ、最近は開発用のフレークが必要なとき、リポジトリにLLMを向けるだけで、必要なものをほとんど理解してくれるから助かってる。Nixは残念ながら、暗闇の中を手探りで進むのに向いてるところがあるんだよね(REPLのことは知ってるけど)。

不変のOSなら、どれでもこの目標を達成できるんじゃない?

Nixを使う前にAIがもっと良くなるのを待ってたんだ。なんか難しそうで、Arch Linuxみたいだったし、時間が取れるか心配だったから。準備として、開発環境を完全にDockerスクリプトに移行して、ネットから動くスニペットをコピー&ペーストできるようにしたんだ。NixとAIは相性抜群で、これからAIによって安くて使いやすい良いソフトウェアがたくさん出てくると思う。

最近、面倒な設定の問題をいくつか解決したんだけど、(正直言って複雑な)NixOSとHMの設定ファイルの中から見つけるのが面倒だったから、Claudeに頼んで見つけてもらったんだ。Claudeには、始めたけど時間がなくて完全には実装できなかった新しい構造に設定の一部を移す作業をやってもらった。提供した例に基づいて、Claudeにいくつかの異なるWMやDEのテスト環境をセットアップさせたんだ。で、今は自分が望むようにすべてが設定できたから、システムを維持するために特に何もしなくてもいいんだ。たまに更新するくらい(不安定版だから手動でやってるけど)。Claudeを私の.configディレクトリに放り込んで、aptやdnf(など)にアクセスさせて、NixOSじゃない環境をセットアップさせることはできるかな?多分できるし、そこそこうまくいくと思うけど、NixOSを信頼するほどには信じられないかな。

AIがなかったら、どうやってdotfilesを設定してたかわからない。nixの構文はちょっと難しいけど、ロールバック機能があるから、自信を持ってシステムを変更できるんだ。主な問題は、非FHSファイルシステムで、アプリケーションやエージェントが一般的に期待してるものとは違うところかな。

すべてのマシン、ローカルとクラウドにClaude Codeトークンを入れたんだ。マシンはほぼ自動で修正されるようになった。特にNixOSでは、基本的なインストールが終わると、Nixのclaude-codeパッケージが入るから、その後は楽だよ。数週間前にOpenClawが出たから、古いPCを引っ張り出してNixOSをインストールして、Claude Codeを追加したら、ClaudeがOpenClawをインストールしてくれた。Claude、OpenClawのセキュリティ状況について教えて。 「実行権限機能をオンにして危険なコマンドを無効にしますか?」って言って、Claudeがそれをやって、実際に無効になってるかテストしてくれる。私のTelegramボットが混乱してる:「ごめんなさい、そのコマンドを実行するシェル/execがありません。数分前にどうやって実行したの?」

ここでは唯一のゲームだよ。おいおい、LLMもGuixにはかなり良いよ。

すごいよ。自分がパッケージ化するのに何週間もかかるような、超難しいパッケージをたくさんパッケージ化してきたんだ(中には試して失敗したものもある)。NixOSを日常的に使って6年になるから、ディストロにはそんなに新しくないよ。stdenvや言語ビルダーをいじるのも簡単だし、欲しいソフトウェアは、数時間の間にclaude/codexが無監視で回してくれるだけで手に入る。めっちゃいいね!確実に過小評価されてる。

数ヶ月前にNixOSを試してみたんだけど、ノートパソコン用の新しいOSを選ぶ必要があったから。確かに、ここやTFAで他の人たちが言ってるように、素晴らしいところもある。システム設定を宣言的に指定して、スナップショットで全てを管理するのは本当にゲームチェンジャーだよね。インストール可能なパッケージの数もすごく多いし、UbuntuやFedoraよりもカバー範囲が全然広い。ただ、現状の実装はちょっと混乱してる部分もある。まず、nix-the-OSとnix-the-package-managerがあって、これが結構ややこしい。要するに、OSは一つの宣言的なシステムで管理して、ローカルやホームの設定は別のもので管理するってこと。あと、「Flakes」っていうのもあって、これがまたよくわからなかった。全く別のモダリティを提供してるみたい。次に、パッケージのインストールはいいけど、やっぱり混乱することもある。パッケージをインストールするのか、サービスをインストールするのか?両方とも選べることが多いけど、その違いがいつも明確じゃない。結局、サービスがあるときはそれを選ぶように学んだ。どちらにしても、パッケージのメンテナーは、頼んだものの最小限のバージョンをインストールする傾向がある。例えば、KDEが欲しかったのに、実際にはアプリや機能がたくさん欠けた最低限のバージョンが来て、追加のコンポーネントを一つずつ追加して、何が壊れてるのかデバッグしないと直せなかった。サービスやパッケージは設定ファイルで構成できるのはありがたいけど、提示されるオプションは通常、利用可能なものの部分的なセットに過ぎないから、自分でインストールスクリプトを拡張しないといけない。だから今の「宣言的」な設定は、nixOSの設定ファイルと手動で編集した/etcのファイルのミックスになってる。最後に、他の人が言ってたドキュメントは本当にごちゃごちゃしてる。古いバージョンと新しいバージョンの情報が色々あって、コマンドラインツールのインターフェースも、選んだ25.05の安定版とその後の25.11の間で変わってるみたいで、ついていくのが難しかった。結局、動くマシンが必要だったから、趣味にはできなかった。NixOSはシステム管理者にはいい選択かもしれないけど、デスクトップLinuxユーザーにはまだ準備が整ってない印象を受けた。

完全に気持ちがわかるよ、そういう理由で離れたんだね。もしまた挑戦したいと思ったら、 > 「フレーク」があるけど、正直あんまり理解できなかったんだ。Nixはフレークを使い始めるまではピンと来なかった。周りには子供じみた内部ドラマがたくさんあって、だからこそ実験的なものとしてマークされていて公式の推奨にはなってないんだ。公式の推奨に従うと、Nixはもっと厳しいことになるよ。フレークの方がずっと直感的なんだ。Determinate Systemsのインストーラーはデフォルトでそれを有効にしていて、彼らのドキュメントは幸せな道に沿ったものだよ(FlakeHubは除いて、まだそれは理解できてない)。基本的なレベルでは、フレークを使うことで、/etc/nixos/nixos.nix(またはそれに類似したもの)を/etcからgitリポジトリに移せるんだ。古いスタイルのnixでもできるかもしれないけど、試す前にフレークを見つけたんだ。以前は/etc/nixでgitを使おうとしたけど、奇妙な所有権の問題でgitが崩壊してた。つまり、nix isoでブートした後に、次のコマンドを実行することで、マシンをインストールして完全に設定できるってことだよ:nixos-install --flake https://github.com/.../repo.git。自分のシステム設定は/home/$user/$cloneで管理してる。/homeに関してはhome-managerがあって、また、そこに導かれることはないんだ(チュートリアルはnix profiles/nix-envの方に押し進めるから)。home-managerは、システム設定がシステムのためにすることを、ホームディレクトリのためにやってくれるし、多くのプログラムモジュールがあるよ。ホームレベルのsystemdユニットも宣言できるしね。 > 手動で編集した/etcファイル。これらのファイルにはenvironment.etcを使えるよ[1]。systemd.tmpfilesは/etc以外のものにも使える。home-managerには.config、.local、.cacheのための同等のものがあるよ。[2]。

それから「フレーク」があるけど、正直あんまり理解できなかった。フレークは2つのことをするんだ:1. あるNixコードベースの入力と出力の宣言。2. この入力ソースのバージョンを固定すること。依存関係の固定は、言語特有のパッケージマネージャーでよく見られるpackage.json/package.lockなどに似てるよ。

services.desktopManager.gnome.extraGSettingsOverrides = dconfの設定をもっと宣言的に設定できるよ: https://tangled.org/jonathan.dickinson.id/nix/blob/7c895ada8...

自分が必要なパッケージや設定を含めて、OS全体を一つの宣言的なセットアップで指定できるんだ。それが一つの場所に集約されているっていうのは、最初に思っていたよりも大事なことなんだよね。実際に試してみたら、理論上だけの話だってことがわかった。最初に「xyzをどうやってインストールするの?」ってググり始めた瞬間、フレークがあることに気づくし、他にも複雑なgitのような方法があったりする。パッケージマネージャーもあるし、この記事みたいに直接設定ファイルを編集する方法もある。使い捨ての一時インストールみたいなのもあって、当然ソフトウェアガイドはすべての手順を教えてくれるわけじゃないから、意見が分かれるんだよね。まるでDebianを使っているみたいで、ソフトウェアが全部.rpmでしか来ない感じ。これには本当にがっかりしたよ。OPと同じように、基本的な設定ファイルの部分が好きだったからね。