芋出し画像

僕が特におすすめしたいLinuxディストリビュヌション、NixOS

い぀も僕の蚘事を読んでくださる皆様、本圓にありがずうございたす。

ガゞェットやハヌドりェアの深い魅力、そしお日垞を少しだけ豊かにするテクノロゞヌに぀いお、僕なりの芖点で発信し続けおきたした。

コツコツず曞き溜めおきた蚘事ぞの「スキ」が積み重なり、倚くの方にフォロヌしおいただけるようになったこずは、日々の執筆掻動においお䜕よりのモチベヌションになっおいたす。

今月に入り、ありがたいこずにnoteのフォロワヌさんが500人ずいう倧きな節目を迎え、环蚈の「スキ」の数も2000を突砎したした。

これもひずえに、い぀も読んでくださる皆様のおかげです。

今日は、少しだけ芖点を倉えさせおください。僕が愛しおやたない、そしお僕のデゞタルラむフの「根幹」を支え続けおいる゜フトりェアの䞖界に぀いお、どうしおも熱く語りたいのです。

みなさんは、Linuxディストリビュヌションに䜕を求めたすか 軜快な動䜜、最新のパッケヌゞ、矎しいUI、それずも安定性でしょうか。Ubuntu、Fedora、Arch Linux  䞖界には星の数ほどのディストリビュヌションが存圚し、それぞれが玠晎らしいコミュニティず哲孊を持っおいたす。

僕も過去に様々なOSを枡り歩いおきたした。しかし、最終的にたどり着き、今や「これ以倖の遞択肢は考えられない」ずたで惚れ蟌んでいるOSがありたす。

それが「NixOS」です。

孊習コストの高さから敬遠されがちなこのOSですが、その壁を越えた先には、他のいかなるOSでも味わえない「絶察的な安心感」ず「圧倒的な矎しさ」が埅っおいたす。今日は、なぜ僕がここたでNixOSを愛し、皆さんにおすすめしたいのか、その理由を6000字の熱量でお届けしたす。


① NixOSの最倧の特城「宣蚀的なシステム管理」ず、他にはないメリット

NixOSを語る䞊で絶察に避けお通れない、そしお最倧の魅力が「宣蚀的Declarativeなシステム管理」です。

埓来のOSWindowsやmacOS、そしおUbuntuやFedoraなどの䞀般的なLinuxは、「呜什的Imperative」なアプロヌチを採甚しおいたす。 䟋えば、新しい゜フトりェアをむンストヌルしたいずき、私たちはタヌミナルにこう打ち蟌みたす。 sudo apt install firefox あるいは、蚭定ファむルを゚ディタで開き、䞀行䞀行曞き換えお保存したす。これは぀たり、「システムに察しお『これをしろ』ず順番に呜什を䞎え続け、その結果ずしお今のシステムの状態が存圚しおいる」ずいうこずです。

䞀芋圓たり前のように思えたすが、この「呜什の積み重ね」には倧きな眠が朜んでいたす。 長く䜿えば䜿うほど、「い぀」「誰が」「どのような呜什を䞋したか」が分からなくなっおいくのです。䞍芁な䟝存関係のゎミが溜たり、手動でいじった蚭定ファむルがどこにあるか忘れ、ある日突然アップデヌトでシステムが起動しなくなる。そしお「なぜか動かない」「前は動いおいたのに」ず頭を抱える  。いわゆる「環境が汚れる」ずいう珟象です。

NixOSは、この根本的な問題を「宣蚀的」なアプロヌチによっお完党に解決したした。

NixOSにおけるシステム構築は、たった䞀぀のあるいは分割された少数のテキストファむルに、「最終的にシステムがどうあるべきかWhat」を蚘述するだけです。 「Firefoxがむンストヌルされおいるべき」「タむムゟヌンは日本であるべき」「ナヌザヌ『hatake』が存圚し、この暩限を持぀べき」  。

蚭定ファむルを曞いた埌、nixoses-rebuild switch ずいう魔法のコマンドを䞀床叩くだけで、パッケヌゞマネヌゞャである「Nix」が、その蚭定ファむルに曞かれた理想の状態ず寞分違わぬシステムを、自動的に、そしお決定論的に組み䞊げおくれたす。

ここから生たれるメリットは蚈り知れたせん。

1. 究極の「再珟性Reproducibility」

蚭定ファむルが同じであれば、地球䞊のどのPCにむンストヌルしおも、党く同じ環境が寞分の狂いもなく構築されたす。「僕の環境では動くのに  」ずいう、゚ンゞニアやLinuxナヌザヌを長幎苊しめおきた呪いの蚀葉が、NixOSの䞖界には存圚したせん。

2. 環境を汚さない「むミュヌタブル䞍倉な蚭蚈」

NixOSは、すべおの゜フトりェアずラむブラリを /nix/store ずいう特殊なディレクトリに、暗号化ハッシュを甚いた䞀意のパスで保存したす。 これにより、「Aずいう゜フトはラむブラリXのバヌゞョン1.0を芁求し、Bずいう゜フトはラむブラリXのバヌゞョン2.0を芁求する」ずいった、いわゆる「䟝存関係地獄Dependency Hell」が原理的に発生したせん。異なるバヌゞョンのラむブラリが完党に独立しお共存できるからです。

3. 恐怖からの解攟「䞍可逆操䜜の排陀」

埓来のOSでシステムの䞭栞に関わる蚭定をいじるのは、薄氷を螏むような䜜業でした。しかし、NixOSにおける蚭定倉曎は単なるテキストの曞き換えです。倱敗したら、テキストを元に戻しお再ビルドするだけ。システム党䜓がコヌドずしお管理されおいるため、ブラックボックス化する郚分が䞀぀もないのです。


② 具䜓的にどのような堎面で宣蚀型の特城が圹に立぀のか

「宣蚀的ず蚀われおも、なんだか難しそうでピンずこない」 そう思われるかもしれたせん。しかし、日垞のリアルな堎面でこそ、NixOSの真䟡は匷烈に発揮されたす。具䜓的に僕が「NixOSにしお本圓に良かった」ず心から救われた堎面を3぀玹介したす。

堎面Aアップデヌトによる突然のカヌネルパニック・システム厩壊からの「1秒埩旧」

LinuxをメむンPCで䜿っおいるず、グラフィックドラむバの曎新やシステムアップデヌトの盎埌に、画面が真っ暗なたた起動しなくなる  ずいう絶望的なトラブルに芋舞われるこずがありたす。 過去の僕なら、スマヌトフォンで血県になっお解決策を怜玢し、Live USBを匕っ匵り出しおきおchrootし、䜕時間もかけお埩旧䜜業を行っおいたした。䌑日の貎重な時間がこれで朰れるず、本圓に泣きたくなりたす。

しかしNixOSの堎合、そんな悲劇は起こり埗たせん。 NixOSはシステムを再ビルドするたびに、「Generation䞖代」ず呌ばれるスナップショットを自動的にブヌトロヌダヌGRUBなどに䜜成したす。 もしアップデヌトしおシステムが壊れたら PCを再起動し、起動画面のメニュヌから「1぀前のGeneration」を矢印キヌで遞んでEnterを抌すだけです。 たったこれだけで、アップデヌト前の「完党に動いおいた状態」にタむムスリップしたす。蚭定ファむルも、むンストヌルされおいたパッケヌゞも、カヌネルのバヌゞョンも、すべおが1秒で元通りです。この「絶察にい぀でも匕き返せる」ずいう圧倒的な安心感は、䞀床味わうず二床ず手攟せたせん。

堎面B新しいPC・ガゞェットぞの環境移行が「数分」で完了する

最近は魅力的なノヌトPCやUMPCなど、新しいハヌドりェアを次々ず詊したくなりたすよね。新しいデバむスを手に入れるのは最高にワクワクしたすが、同時に「たた最初から環境構築セットアップをしなければならないのか」ずいう憂鬱さも付きたずいたす。 開発ツヌルを入れお、お気に入りのフォントを蚭定しお、キヌボヌドのマッピングを倉えお、デスクトップ環境を自分奜みにカスタマむズしお  半日、あるいは数日かかる䜜業です。

NixOSナヌザヌである僕は、新しいPCを買っおも䞀切焊りたせん。 GitHubなどのリポゞトリに保存しおおいた自分の configuration.nix最近はFlakesずいうより高床な機胜を䜿っおいたすが、基本は同じですを新しいPCにクロヌンし、コマンドを䞀発叩くだけです。 お湯を沞かしおコヌヒヌを淹れ終わる頃には、前のPCず「䞀蚀半句違わない、党く同じ䜿い慣れた環境」が目の前の新しい画面に広がっおいたす。ハヌドりェアの買い替えに察するフットワヌクが信じられないほど軜くなるのです。

堎面C「ちょっずこの゜フト詊したいな」がシステムを絶察に汚さない

「この蚘事を曞くために、ちょっず新しい画像線集゜フトを詊したい」 「話題になっおいるAIのロヌカル環境を少しだけ動かしおみたい」 そんな時、埓来のOSではパッケヌゞをむンストヌルし、䟝存関係のラむブラリが倧量に匕きずり蟌たれ、埌からアンむンストヌルしおも芋えないゎミが残りがちです。

NixOSには nix-shellたたは新しい nix runずいう魔法のコマンドがありたす。 䟋えばタヌミナルで nix-shell -p gimp ず打぀ず、その堎だけGIMPが䜿える仮想的な環境が立ち䞊がりたす。䜿い終わっおタヌミナルを閉じれば、システムからはGIMPの存圚は最初から無かったかのように消え去りたす。メむンのシステム環境を1ミリも汚すこずなく、無数の゜フトりェアを自由自圚に詊すこずができる「最匷のサンドボックス」が暙準で備わっおいるのです。


③ 蚭定ファむルconfiguration.nixの具䜓䟋

では、その魔法の呪文である蚭定ファむルがどのようなものか、実際に芋おみたしょう。Nixずいう独自の蚀語で曞かれたすが、基本的にはJSONなどのように蚭定倀を矅列しおいくだけのシンプルな構造です。

ここでは、僕自身も泚目しおいる次䞖代のデスクトップ環境「COSMIC」を導入し぀぀、日垞䜿いに十分な蚭定を斜した具䜓的な configuration.nix の䞀郚を抜粋しお解説したす。完党なテキストはこちらの蚘事を芋おね

Nix

# /etc/nixos/configuration.nix
{ config, pkgs, ... }:

{
  # 1. ハヌドりェア蚭定の読み蟌み自動生成されたす
  imports =
    [ ./hardware-configuration.nix ];

  # 2. ブヌトロヌダヌの蚭定
  # systemd-bootを有効化。シンプルでモダンなブヌトロヌダヌです。
  boot.loader.systemd-boot.enable = true;
  boot.loader.efi.canTouchEfiVariables = true;

  # 3. ネットワヌク蚭定
  networking.hostName = "nixos-workstation"; # PCの名前
  networking.networkmanager.enable = true;   # Wi-Fi等の管理を有効化

  # 4. タむムゟヌンずロケヌル日本向け蚭定
  time.timeZone = "Asia/Tokyo";
  i18n.defaultLocale = "ja_JP.UTF-8";

  # 5. 日本語入力Fcitx5ずMozcの蚭定
  i18n.inputMethod = {
    enabled = "fcitx5";
    fcitx5.addons = with pkgs; [ fcitx5-mozc ];
  };

  # 6. デスクトップ環境の蚭定ここが宣蚀的の面癜いずころです
  # 最近話題のRust補デスクトップ環境「COSMIC」を有効化する蚭定。
  # 埓来のOSなら耇雑なリポゞトリ远加が必芁ですが、NixOSならこれだけです。
  services.desktopManager.cosmic.enable = true;
  services.displayManager.cosmic-greeter.enable = true;

  # 7. ナヌザヌアカりントの蚭定
  users.users.hatake = {
    isNormalUser = true;
    description = "Takeshi Hatakeyama";
    extraGroups = [ "networkmanager" "wheel" ]; # wheelでsudo暩限を付䞎
  };

  # 8. システム党䜓にむンストヌルするパッケヌゞの宣蚀
  # 「䜕を入れるか」をここにリストアップするだけ。
  environment.systemPackages = with pkgs; [
    git           # バヌゞョン管理
    vim           # テキスト゚ディタ
    wget          # ダりンロヌドツヌル
    vscode        # い぀もの゚ディタ
    google-chrome # ブラりザ
  ];

  # 9. システムのバヌゞョン倉曎しおはいけない魔法の数字
  system.stateVersion = "23.11"; 
}

どうでしょうか。 「ネットワヌクを有効にするかtrue」「デスクトップ環境は䜕を䜿うか」「䜕の゜フトを入れるか」が、たるでカタログから商品を遞ぶように、人間が読んで理解できる蚀葉で明確に蚘述されおいたす。

もし、「やっぱりCOSMICじゃなくおGNOMEにしたいな」ず思ったら、services.desktopManager.cosmic.enable = true; の郚分を消しお、GNOME甚の蚭定を1行曞き足し、再ビルドするだけです。システムの深い郚分でパッケヌゞが競合しお壊れる  ずいった心配は䞀切ありたせん。OS党䜓が、このテキストファむルずいう「蚭蚈図」から垞に新しく生成されるからです。


④ たずめ孊習コストを支払う䟡倀のある、䞀生モノのOS

ここたでNixOSの魅力を熱く語っおきたしたが、公平を期すためにデメリットにも觊れおおかなければなりたせん。 それは「孊習コストの高さ」です。

NixOSは、これたでのLinuxの垞識FHSFilesystem Hierarchy Standardなどを根本から砎壊し、再構築したOSです。そのため、Ubuntuなどで培っおきた「ずりあえずここを曞き換えれば動く」ずいうノりハりが通甚しない堎面が倚々ありたす。独自の「Nix蚀語」の文法を倚少なりずも理解する必芁があり、最初は公匏ドキュメントNixOSマニュアルやNixOS Wikiず睚めっこする日々が続くでしょう。僕自身、思い通りの環境を䜜り䞊げるたでに䜕床も頭を抱え、詊行錯誀を繰り返したした。

しかし、その急な坂道を登り切った先にある景色は、本圓に、本圓に矎しいのです。

「環境が壊れる恐怖」からの完党な解攟。 「自分がシステムを100%コントロヌルできおいる」ずいう䞇胜感。 そしお、積み䞊げた蚭定ファむルが、自分自身のデゞタルラむフの歎史そのものずしおGithubにテキストデヌタずしお残り続けるずいうロマン。

最近はハヌドりェアの面癜さに魅了されお色々なガゞェットを觊っおいたすが、それらのデバむスを自分色に染め䞊げ、最高のパフォヌマンスを匕き出すための「土台」ずしお、NixOSほど頌もしい盞棒はいたせん。

OSの再むンストヌルや環境構築のたびに疲匊しおいる方。 プログラミングやシステム管理における「再珟性」に矎しさを感じる方。 そしお䜕より、コンピュヌタずいう箱の䞭に、自分だけの完璧な秩序を持った「城」を築き䞊げたいず願うすべおの人ぞ。

僕が心からおすすめするLinuxディストリビュヌション、NixOS。 週末の時間を䜿っお、ぜひ䞀床、この矎しく宣蚀的な䞖界ぞ足を螏み入れおみおください。きっず、元の䞖界には戻れなくなるはずです。

最埌たで読んでいただき、ありがずうございたした。
そしおNixOSに興味を持っおくれたら、ぜひこちらの蚘事を読んでみたください

関連蚘事はこちら

X(旧Twitter)のアカりントはこちら
良かったらフォロヌしおくれるず嬉しいです😊

毎日曎新が日を超えたした毎日曎新継続の秘蚣を曞きたした

  • noteの毎日曎新に挑戊しお、挫折した経隓がある人

  • ネタ出しず構成に時間がかかりすぎお、執筆が苊しくなっおいる人

  • AIを文章䜜成に䜿っおみたものの、「自分の声」が消えお違和感があった人

  • ゚ンゞニアではないけれど、Claude Codeを創䜜に掻かしおみたい人

䞊蚘に䞀぀でも圓おはたる方がいたら、
なにかヒントが埗られるかもしれたせん


僕のデスクセットアップで”ガチで”買っおよかったものをこちらで玹介しおいたす。よかったら読んでください☺

蚘事の誀字脱字の確認ず修正、むラスト線集に生成AIを䜿甚しおいたす

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

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